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中用split()方法分割字符串的使用介绍
May 20 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
Python入门_浅谈for循环、while循环
May 16 Python
Flask框架各种常见装饰器示例
Jul 17 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Elasticsearch 批量操作
Apr 19 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
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
YII框架常用技巧总结
2019/04/27 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
python进阶教程之异常处理
2014/08/30 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
Python set常用操作函数集锦
2017/11/15 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
开办加工厂创业计划书
2014/01/03 职场文书
幼儿园新年寄语
2014/04/03 职场文书
岗位说明书标准范本
2014/07/30 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android