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脚本来获取Google搜索结果的示例
May 04 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
django使用LDAP验证的方法示例
Dec 10 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
Django Rest framework权限的详细用法
Jul 25 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
python函数中将变量名转换成字符串实例
May 11 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脚本的10个技巧(8)
2006/10/09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
smarty自定义函数用法示例
2016/05/20 PHP
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
简单的React SSR服务器渲染实现
2018/12/11 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python判断正负数方式
2020/06/03 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
庆元旦迎新年广播稿
2014/02/18 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
教育合作协议范本
2014/10/17 职场文书