• 1
  • 1
分享

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_奕然
@ time : 2022-8-12
"""
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表示禁止将来读和写。

我们来看看代码执行结果:

如下图状态,说明服务器没有开启这个端口服务,所以这个端口是可以使用!


20200707150638794.png

2. 释放端口

如果端口被占用,我们就需要释放它。

那如何释放端口呢,?

有两种方法:

        --> cmd窗口 释放 端口;

        --> python代码释放端口。

2.1 cmd 释放端口

1、先查找我们要需要的端口号

netstat -aon | findstr "5037"

625.png

2、通过端口号,查找pid,然后杀死进程

taskkill -f -pid 18028

2.2 Python代码释放端口

那如果在python里面,如何实现呢?

我们看代码:

# -*- coding: utf-8 -*-
"""
@ auth : Carl_奕然
@ time : 2022-8-12
"""
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)

我们来瞅瞅,运行结果是啥:

52680.png

说明4723这个端口,是可用的。


我是Carl_奕然:

    51Testing 认证讲师

    CSDN博客专家


关注我,带你学习更多更专业的测试开发知识。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:免费好用的在线身份证号码生成工具,有推荐的吗 ?阿常回答:有,这 3 款在线身份证号码生成工具,推荐使用 !1、随机身份证号码生成包含功能:设置出生地、出生日期、性别、生成个数。官网地址:http://sfz.uzuzuz.com2、随机身份证号码生成包含功能:设置出生地、出生日期、性别、生成个数。官网地址:http://www.chineseidcard.com3、在线身份证号码生成器包含功能:设置生成个数(无需设置出生地、出生日期、性别,直接生成身份证号码)。官网地址:https://www.suijidaquan.com/shenfenzheng阿常碎碎念:平时的测试...
            0 0 36301
            分享
          • 概述客户端测试包括很多工作,测试工作有功能测试、稳定性测试、代码静态检查、性能测试、兼容性测试和安全测试等,辅助工作有用例管理、设备管理、项目管理等,还有很多其他工作。工程师们往往花了很多时间在做一些重复性工作,没有过多的精力投入到产品质量的深挖上去。地图客户端测试效率提升思路是不定期得组织版本耗时分析,将耗时较长工作缩短、将耗时少工作变为零耗时,从而释放人力做更多探索测试。比如:事例1:设备管理这块,没有一个公共的地方记录设备在哪位工程师手上,工程师借出还入操作比较繁琐,导致在设备调度这块耗时很长。解决方式:开发一个设备管理App,工程师只需要打开设备做借入还出操作;搭建设备管理平台,用于方...
            0 1 4378
            分享
          • 1、引言性能这块,虽然是小鱼一直不想去触碰的地方,但是,身在江湖漂,哪能不带刀!!小屌丝:鱼哥,最近你得注意身体啊小鱼:昂… 怎么突然关心起我来了?小屌丝:还用我说嘛,最近你博文更新的慢,不是在耍妹子,就是在去耍妹子的路上。小鱼:( ‵o′)凸…我这是在忙工作的事情小屌丝:我差点信了!!小鱼:…算了,我不替自己解释了, 我替IO解释吧!小屌丝:难道,今天要整IO? 那赶紧!在认识IO之前,我们要先了解 一下磁盘。然后在慢慢的认识IO2、 硬盘知识2.1 磁盘原理1、定义①盘片以每分钟数千转到上万转的速度在高速旋转,15K 10k 7.5k 5.2k RPM②磁头就能对盘片上的指定位置进行数据的...
            1 0 3646
            分享
          • 在这段测试的工作中,领导长期外地出差,除了邮件,还会经常要用到QQ和经理沟通测试结果的一些东西。就这一段时间来发现了自己对于测试人员的描述问题上发生了很不应该的问题。做测试人员要严谨一点比较好问题一:打字语言不够严谨,以为对方知道要讲的是什么意思,所以打的字很简单。但这样的误区就是测试结果本来就是一个很敏感和严密度要求比较高的问题。问题二:在描述方面,站在测试人员的角度去判断一个问题而给它下结论。这个是不对的。对于同一个问题,对于开发人员,现场配置人员,测试人员看问题的角度都是不一样的,所以下次在描述测试数据的时候不要轻易去下结论,而只要把自己所测试看到的种种现象一一记录清楚,以待评估阶段来定...
            0 0 1054
            分享
          • 在软件开发过程中,测试人员负责确保软件产品的质量,检查它们是否满足预定的需求并在各种环境下正常运行。虽然测试人员可以利用手工测试方法,但编写代码以进行自动化测试是必不可少的进阶技能。本文将阐述测试人员为什么需要编写代码,并探讨编写代码测试的好处。在软件测试过程中,有几种不同的测试方法,包括单元测试、集成测试、系统测试和验收测试。为了更有效地进行这些测试,测试人员通常需要编写代码来自动化测试用例。这样可以提高测试的速度、效率和准确性。编写代码可以帮助测试人员更深入地了解软件的工作原理,从而更好地发现潜在的问题。总结下来编写代码测试有以下好处:* 提高测试效率:通过编写代码来自动化测试,测试人员可...
            0 0 1009
            分享
      • 51testing软件测试圈微信