时间:2021-05-23
我们要引用的socket模块来校验端口是否被占用。
简单一句话:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。
socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。
关于socket的通讯原理,我们可以参考socket通讯原理
关于socket模块内容,我们可以参考python 的socket模块文档
我们上代码,看看如何检测端口是否被使用
# -*- coding: utf-8 -*-"""@ auth : carl_DJ@ time : 2020-7-7"""import socketdef 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 Falseif __name__ == '__main__': host = '127.0.0.1' prot = 4723 check_port(host,prot)这里注意一点:
shutdown(self,flag):禁止在一个Socket上进行数据的接收和发送。
利用shutdown()函数,使双向数据传输变为单向数据传输。
参数:
>0表示禁止将来读;
>1表示禁止将来写
>2表示禁止将来读和写。
我们来看看代码执行结果:
如下图状态,说明服务器没有开启这个端口服务,所以这个端口是可以使用!
如果端口被占用,我们就需要释放它。
那如何释放端口呢,?
有两种方法:
1.cmd窗口 释放 端口;
2.python代码释放端口。
1、先查找我们要需要的端口号
netstat -aon | findstr "5037"2、通过端口号,查找pid,然后杀死进程
taskkill -f -pid 18028那如果在python里面,如何实现呢?
我们看代码:
我们来瞅瞅,运行结果是啥:
说明4723这个端口,是可用的。
这里再说一句:
os.popen() :就是要打开一个管道,获取输入到cmd控制台的信息。
更详细的内容,可以参考pyhton的os.popen()官方文档
当然,如果想飞速了解os.popen()与os.system()
可以参照这篇《调用系统命令 os.system()和os.popen() 》文章。
到此这篇关于Python实现Appium端口检测与释放的实现的文章就介绍到这了,更多相关Python Appium端口检测内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
推荐阅读:使用python检测主机存活端口及检查存活主机下面给大家分享使用python语言实现获取主机名根据端口杀死进程代码。ip=os.popen("ifco
本文实例讲述了Python实现的tcp端口检测操作。分享给大家供大家参考,具体如下:#coding=utf-8importsysimportsocketimpo
本文实例讲述了python检测远程udp端口是否打开的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:importsocketimportthr
本文实例讲述了python实现端口转发器的方法。分享给大家供大家参考。具体如下:下面的python代码实现端口转发器,支持udp端口转发由于工作需要用到一个端口
本文代码实现Python多线程扫描端口,具体实现代码如下。#coding:utf-8importsocketimportthreadimporttimesock