黑松山资源网 Design By www.paidiu.com
本文介绍Python实现端口复用实例如下所示:
#coding=utf-8 import socket import sys import select import threading host='192.168.99.100' port=80 class Thread(threading.Thread): def __init__(self,buf,sockfd): threading.Thread.__init__(self) self.buf=buf self.sockfd=sockfd def run(self): if len(self.buf)!=0: if 'GET' in self.buf : #判断是否是浏览器提交的数据如果是则将提交的数据转发至本地环回地址的80端口 s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s2.connect(('127.0.0.1',80)) s2.send(self.buf) bufer='' while 1: recv_data=s2.recv(1024) bufer+=recv_data if len(recv_data)==0: break print bufer,len(bufer) if len(bufer)==0: pass self.sockfd.send(bufer) #将服务器发送的数据发回客户端 s2.close self.sockfd.close sys.exit() else: 'ps:connect to ssh' #如果数据不是浏览器提交则将其转发至本地的22端口 s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s2.connect(('127.0.0.1',22)) s2.send(self.buf) recv_data=s2.recv(4096) conn.send(recv_data) self.sockfd.close s2.close s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) #端口复用的关键点 s.bind((host,port)) s.listen(10) while 1: infds,outfds,errfds=select.select([s,],[],[],5) #使用select函数进行非阻塞操作 if len(infds)!=0: conn,(addr,port)=s.accept() print 'connected by',addr,port data=conn.recv(1024) t=Thread(data,conn) t.start() s.close #coding=utf-8 import socket import sys import select import threading host='192.168.99.100' port=80 class Thread(threading.Thread): def __init__(self,buf,sockfd): threading.Thread.__init__(self) self.buf=buf self.sockfd=sockfd def run(self): if len(self.buf)!=0: if 'GET' in self.buf : #判断是否是浏览器提交的数据如果是则将提交的数据转发至本地环回地址的80端口 s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s2.connect(('127.0.0.1',80)) s2.send(self.buf) bufer='' while 1: recv_data=s2.recv(1024) bufer+=recv_data if len(recv_data)==0: break print bufer,len(bufer) if len(bufer)==0: pass self.sockfd.send(bufer) #将服务器发送的数据发回客户端 s2.close self.sockfd.close sys.exit() else: 'ps:connect to ssh' #如果数据不是浏览器提交则将其转发至本地的22端口 s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s2.connect(('127.0.0.1',22)) s2.send(self.buf) recv_data=s2.recv(4096) conn.send(recv_data) self.sockfd.close s2.close s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) #端口复用的关键点 s.bind((host,port)) s.listen(10) while 1: infds,outfds,errfds=select.select([s,],[],[],5) #使用select函数进行非阻塞操作 if len(infds)!=0: conn,(addr,port)=s.accept() print 'connected by',addr,port data=conn.recv(1024) t=Thread(data,conn) t.start() s.close
例子2
import socket tcp1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #在绑定前调用setsockopt让套接字允许地址重用 tcp1.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) tcp2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) #接下来两个套接字都也可以绑定到同一个端口上 tcp1.bind(('0.0.0.0', 12345)) tcp2.bind(('0.0.0.0', 12345)) import socket tcp1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #在绑定前调用setsockopt让套接字允许地址重用 tcp1.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) tcp2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) #接下来两个套接字都也可以绑定到同一个端口上 tcp1.bind(('0.0.0.0', 12345)) tcp2.bind(('0.0.0.0', 12345))
例子3
重定向
import socket,os bufLen = 4*1024 sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock1.bind(('192.168.168.100', 8000)) sock1.listen(5) sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock2.connect(('192.168.168.100', 12345)) while True: connection,address = sock1.accept() buf = connection.recv(bufLen) #print buf sock2.send(buf) connection.send(sock2.recv(bufLen)) connection.close() import socket,os bufLen = 4*1024 sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock1.bind(('192.168.168.100', 8000)) sock1.listen(5) sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock2.connect(('192.168.168.100', 12345)) while True: connection,address = sock1.accept() buf = connection.recv(bufLen) #print buf sock2.send(buf) connection.send(sock2.recv(bufLen)) connection.close()
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年10月10日
2024年10月10日
- 《原神》「星路拾忆」网页活动壁纸展示
- 群星.2024-祝你幸福!电影原声带【阿里巴巴】【FLAC分轨】
- 于台烟.2004-执着【乾坤唱片】【WAV+CUE】
- 黄品源.2004-感谢·情人(引进版)【滚石】【WAV+CUE】
- 《最终幻想16》评测:游、戏两难全的系列转折
- 《纸嫁衣》五部打包¥104,《鬼泣5》仅需¥44
- 《崩坏:星穹铁道》造物大赛卷出新高度
- 《王菲 菲常传奇 2CD》[WAV+CUE][950MB]
- 《王菲 空灵独味唱腔 非常传奇 紫水晶2CD》[WAV+CUE][860MB]
- 《车载专业测试王1号 极品音质》[WAV/分轨][980MB]
- 炉石传说的国服回归送什么奖励 炉石传说9.25回归最新消息介绍
- 云顶之弈最强阵容汇总2024 云顶之弈最强阵容搭配最新版本
- S14lol全球总决赛在哪观看 lol全球总决赛观赛直播地址汇总
- 黄思婷2011-感谢天[豪记唱片][WAV+CUE]
- 孙淑媚2013-太阳[台湾首版][WAV+CUE]