最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python实现简单的代理服务器

来源:懂视网 责编:小采 时间:2020-11-27 14:34:37
文档

Python实现简单的代理服务器

Python实现简单的代理服务器:本文实例讲述了Python实现简单的代理服务器。分享给大家供大家参考。具体如下: 具备简单的管理功能,运行后 telnet localhost 9000 端口可以进行管理主要功能就是做包转发,如果有一个桥服务器,可以用来外网访问内网用,还是很管用的 #/bin/en
推荐度:
导读Python实现简单的代理服务器:本文实例讲述了Python实现简单的代理服务器。分享给大家供大家参考。具体如下: 具备简单的管理功能,运行后 telnet localhost 9000 端口可以进行管理主要功能就是做包转发,如果有一个桥服务器,可以用来外网访问内网用,还是很管用的 #/bin/en

本文实例讲述了Python实现简单的代理服务器。分享给大家供大家参考。具体如下:

具备简单的管理功能,运行后 telnet localhost 9000 端口可以进行管理主要功能就是做包转发,如果有一个桥服务器,可以用来外网访问内网用,还是很管用的

#/bin/env python 
#coding:utf-8 
import socket,select,sys,time 
import thread 
s_list = [] 
def loop(cs,addr,s_ip,s_port): 
 print '%s %d connected.' % addr 
 ts = socket.socket() 
 try: 
 ts.connect((s_ip,s_port)) 
 except: 
 cs.close() 
 print '%s %d closed.' % addr 
 sys.exit(0) 
 while True: 
 rl,wl,xl = select.select([cs.fileno(),ts.fileno()],[],[cs.fileno(),ts.fileno()]) 
 if len(xl) > 0: 
 cs.close() 
 ts.close() 
 print '%s %d closed.' % addr 
 sys.exit(0) 
 if len(rl) > 0: 
 if rl[0] == cs.fileno(): 
 rs = ts 
 ws = cs 
 else: 
 rs = cs 
 ws = ts 
 try: 
 buffer = ws.recv(10000) 
 if len(buffer) == 0: 
 raise 
 rs.send(buffer) 
 except: 
 rs.close() 
 ts.close() 
 print '%s %d closed.' % addr 
 sys.exit(0) 
def mainserver(l_port,s_ip,s_port): 
 global s_list 
 try: 
 ss = socket.socket() 
 ss.bind(('0.0.0.0',l_port)) 
 ss.listen(10) 
 s_list.append((l_port,s_ip,s_port)) 
 except: 
 sys.exit(0) 
 while True: 
 cs,addr = ss.accept() 
 thread.start_new_thread(loop,(cs,addr,s_ip,s_port)) 
def manager(l_port): 
 global start,s_list 
 ss = socket.socket() 
 ss.bind(('0.0.0.0',l_port)) 
 ss.listen(10) 
 while True: 
 cs,addr = ss.accept() 
 cs.send("""trans server 1.0
type 'help' to get help
""")
 buffer = '' 
 while True: 
 buf = cs.recv(10000) 
 if len(buf) == 0: 
 cs.close() 
 break 
 if buf[-1] not in ('
','
'): 
 buffer += buf 
 continue 
 buffer += buf 
 cmd = buffer.strip() 
 buffer = '' 
 if cmd == 'exit': 
 cs.close() 
 break 
 elif cmd == 'stop': 
 start = 0 
 cs.close() 
 sys.exit(0) 
 elif cmd == 'list': 
 b = '' 
 for l in s_list: 
 b += '%4d %s:%d
' % l 
 if len(b) > 0: 
 cs.send(b) 
 elif cmd in ('help','?'): 
 cs.send("""-------------------------------------------
exit
 
 exit telnet
 
start localport serverip:serverport
 
 start a new server
 
list
 
 list all server
 
-------------------------------------------
 
""") 
 else: 
 cmds = cmd.split(" ",1) 
 if len(cmds) > 1 and cmds[0] == 'start': 
 args = cmds[1].strip().split(" ",1) 
 if len(args) != 2: 
 cs.send('start localport serverip:serverport
') 
 continue 
 arg = args[1].split(":",1) 
 if len(arg) != 2: 
 cs.send('start localport serverip:serverport
') 
 continue 
 try: 
 l_port = int(args[0]) 
 s_ip = arg[0] 
 s_port = int(arg[1]) 
 except: 
 cs.send('start localport serverip:serverport
') 
 continue 
 thread.start_new_thread(mainserver,(l_port,s_ip,s_port)) 
 cs.send('start OK!
') 
 else: 
 cs.send('no command [%s]
' % cmd) 
 continue 
def main(): 
 global start 
 if len(sys.argv) == 3: 
 try: 
 l_port = int(sys.argv[1]) 
 s_ip,s_port = sys.argv[2].split(":") 
 s_port = int(s_port) 
 thread.start_new_thread(mainserver,(l_port,s_ip,s_port)) 
 except: 
 pass 
 start = 1 
 thread.start_new_thread(manager,(9000,)) 
 while start: 
 time.sleep(1) 
if __name__ == '__main__': 
 start = 0 
 main()

希望本文所述对大家的Python程序设计有所帮助。

文档

Python实现简单的代理服务器

Python实现简单的代理服务器:本文实例讲述了Python实现简单的代理服务器。分享给大家供大家参考。具体如下: 具备简单的管理功能,运行后 telnet localhost 9000 端口可以进行管理主要功能就是做包转发,如果有一个桥服务器,可以用来外网访问内网用,还是很管用的 #/bin/en
推荐度:
标签: 实现 服务器 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top