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表示禁止将来读和写。
我们来看看代码执行结果:
如下图状态,说明服务器没有开启这个端口服务,所以这个端口是可以使用!
2. 释放端口
如果端口被占用,我们就需要释放它。
那如何释放端口呢,?
有两种方法:
1.cmd窗口 释放 端口;
2.python代码释放端口。
2.1 cmd 释放端口
1、先查找我们要需要的端口号
netstat -aon | findstr "5037"
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)
我们来瞅瞅,运行结果是啥:
说明4723这个端口,是可用的。
这里再说一句:
os.popen() :就是要打开一个管道,获取输入到cmd控制台的信息。
更详细的内容,可以参考pyhton的os.popen()官方文档
当然,如果想飞速了解os.popen()与os.system()
可以参照这篇《调用系统命令 os.system()和os.popen() 》文章。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】