Python 简单的代理服务器

Python 简单的代理服务器,第1张

概述Python 简单的代理服务器

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#/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_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_port))                except:            sys.exit(0)        while True:            cs,addr = ss.accept()            thread.start_new_thread(loop,(cs,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\r\ntype 'help' to get help\r\n""")            buffer = ''            while True:                buf = cs.recv(10000)                if len(buf) == 0:                    cs.close()                    break               if buf[-1] not in ('\r','\n'):                    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\r\n' % l                    if len(b) > 0:                        cs.send(b)                elif cmd in ('help','?'):                    cs.send("""-------------------------------------------\r  exit\r      exit telnet\r  start localport serverip:serverport\r      start a new server\r  List\r      List all server\r  -------------------------------------------\r  """)                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\r\n')                            continue                       arg = args[1].split(":",1)                        if len(arg) != 2:                            cs.send('start localport serverip:serverport\r\n')                            continue                       try:                            l_port = int(args[0])                            s_ip = arg[0]                            s_port = int(arg[1])                        except:                            cs.send('start localport serverip:serverport\r\n')                            continue                       thread.start_new_thread(mainserver,(l_port,s_port))                        cs.send('start OK!\r\n')                    else:                        cs.send('no command [%s]\r\n' % 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,s_port))            except:                pass       start = 1       thread.start_new_thread(manager,(9000,))        while start:            time.sleep(1)    if __name__ == '__main__':        start = 0       main()

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的Python 简单的代理服务器全部内容,希望文章能够帮你解决Python 简单的代理服务器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1198712.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存