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连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
python+mysql实现简单的web程序
Sep 11 Python
Python threading多线程编程实例
Sep 18 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
在Django的View中使用asyncio的方法
Jul 12 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
python如何爬取网页中的文字
Jul 28 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
python 第三方库paramiko的常用方式
Feb 20 Python
python自动化之如何利用allure生成测试报告
May 02 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 5.5版本的array_column()函数
2014/10/24 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python简单的制作图片验证码实例
2017/05/31 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
python算的上脚本语言吗
2020/06/22 Python
Python json格式化打印实现过程解析
2020/07/21 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
《商鞅南门立木》教学反思
2014/02/16 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
医德考评自我评价
2014/09/14 职场文书
中班上学期个人总结
2015/02/12 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
Redis RDB技术底层原理详解
2021/09/04 Redis