Python实现Appium端口检测与释放的实现


Posted in Python onDecember 31, 2020

1. 监测端口

我们要引用的socket模块来校验端口是否被占用。

1.1 socket是什么?

简单一句话:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。

1.2 socket本质是什么?

socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

关于socket的通讯原理,我们可以参考socket通讯原理
关于socket模块内容,我们可以参考python 的socket模块文档

我们上代码,看看如何检测端口是否被使用

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-7-7
"""


import socket

def check_port(host,port):
 "检查端口是否被占用"

 #创建socket对象
 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 try:
  s.connect((host,port))
  s.shutdown(2) #表示将来禁止读和写
 except OSError as msg:
  print("port %s is available !" %port)
  print(msg)
  return True
 else:
  print("port %s already in use! " %port)
  return False

if __name__ == '__main__':
 host = '127.0.0.1'
 prot = 4723
 check_port(host,prot)

这里注意一点:
shutdown(self,flag):禁止在一个Socket上进行数据的接收和发送。
利用shutdown()函数,使双向数据传输变为单向数据传输。

参数:
>0表示禁止将来读;
>1表示禁止将来写
>2表示禁止将来读和写。

我们来看看代码执行结果:

如下图状态,说明服务器没有开启这个端口服务,所以这个端口是可以使用!

Python实现Appium端口检测与释放的实现

2. 释放端口

如果端口被占用,我们就需要释放它。
那如何释放端口呢,?
有两种方法:
1.cmd窗口 释放 端口;
2.python代码释放端口。

2.1 cmd 释放端口

1、先查找我们要需要的端口号

netstat -aon | findstr "5037"

Python实现Appium端口检测与释放的实现

2、通过端口号,查找pid,然后杀死进程

taskkill -f -pid 18028

2.2 Python代码释放端口

那如果在python里面,如何实现呢?
我们看代码:

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-7-7
"""
import os

def release_port(port):
 "释放指定端口"

 #查找端口对应的pid
 cmd_find = 'netstat -ano | findstr %s' %port
 print(cmd_find)

 #返回命令执行结果
 result = os.popen(cmd_find).read()
 print(result)

 if str(port) and 'LISTENING' in result:
  #获取端口对应的pid进程
  i = result.index('LISTENING')
  # 'LISTENING'与端口号之间相隔7个空格
  start = i + len('LISTENING') +7
  end = result.index('\n')
  pid = result[start:end]

  #关闭被占用端口的pid
  cmd_kill = 'taskkill -f -pid %s' %pid
  print(cmd_kill)
  os.popen(cmd_kill)
 else:
  print('port %s is available !' %port)

if __name__ == '__main__':
 host = '127.0.0.1'
 port = 4723
 release_port(port)

我们来瞅瞅,运行结果是啥:

Python实现Appium端口检测与释放的实现

说明4723这个端口,是可用的。
这里再说一句:
os.popen() :就是要打开一个管道,获取输入到cmd控制台的信息。
更详细的内容,可以参考pyhton的os.popen()官方文档
当然,如果想飞速了解os.popen()与os.system()
可以参照这篇《调用系统命令 os.system()和os.popen() 》文章。

到此这篇关于Python实现Appium端口检测与释放的实现的文章就介绍到这了,更多相关Python Appium端口检测内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现删除Android工程中的冗余字符串
Jan 19 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python的语言类型(详解)
Jun 24 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
PHP统计代码行数的小代码
Sep 19 Python
python下载库的步骤方法
Oct 12 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
python 基于selectors库实现文件上传与下载
Dec 31 #Python
python中Mako库实例用法
Dec 31 #Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 #Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 #Python
python 检测nginx服务邮件报警的脚本
Dec 31 #Python
Django 实现图片上传和下载功能
Dec 31 #Python
Python wordcloud库安装方法总结
Dec 31 #Python
You might like
PHP insert语法详解
2008/06/07 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
对python Tkinter Text的用法详解
2018/10/11 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
PyQt5实现登录页面
2020/05/30 Python
Python加速程序运行的方法
2020/07/29 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
机电一体化专业应届本科生求职信
2013/09/27 职场文书
办公室年终个人自我评价
2013/10/28 职场文书
优秀护士先进事迹
2014/05/08 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
浅谈Web Storage API的使用
2021/06/23 Javascript