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如何通过protobuf实现rpc
Mar 06 Python
Python中join函数简单代码示例
Jan 09 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
python机器人运动范围问题的解答
Apr 29 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 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 上传功能实例代码
2010/04/13 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
Vue header组件开发详解
2018/01/26 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
在python中安装basemap的教程
2018/09/20 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
幼儿如何来做好自我评价
2013/11/05 职场文书
名人传读书笔记
2015/06/26 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python