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基于DES算法加密解密实例
Jun 03 Python
Python yield 使用方法浅析
May 20 Python
python实现手机通讯录搜索功能
Feb 22 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
Python的Lambda函数用法详解
Sep 03 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
python lambda的使用详解
Feb 26 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
python 如何获取页面所有a标签下href的值
May 06 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提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php实例化一个类的具体方法
2019/09/19 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
Python实现的HMacMD5加密算法示例
2018/04/03 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
pandas 将索引值相加的方法
2018/11/15 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
出国考察邀请函
2014/01/21 职场文书
期中考试后的反思
2014/02/08 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
培训讲师岗位职责
2014/04/13 职场文书
作风建设演讲稿
2014/05/23 职场文书
人事任命书怎么写
2014/06/05 职场文书
比赛口号大全
2014/06/10 职场文书
关于颐和园的导游词
2015/01/30 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS