Python TCP代理服务器

'''
Python TCP代理服务器 by 郑瑞国
1、建立网络套接字s
2、绑定地址
3、监听
4、接受客户端连接
5、多线程处理客户端消息

6、建立网络套接字proxy_client
7、与服务器建立网络连接
8、收发信息
'''
import time
import socket
import threading

s = socket.socket()                                          #1、建立网络套接字s
s.bind(('0.0.0.0',9998))                                     #2、绑定地址
s.listen(5)                                                  #3、监听

def handle(client,addr,server_ip,server_port):
    proxy_client = socket.socket()                           #6、建立网络套接字proxy_client
    proxy_client.connect((server_ip,server_port))            #7、与服务器建立网络连接
    while True:                                              #8、收发信息
        try:
            text = client.recv(1024).decode()
            time.sleep(0.1)
            if text:                                         
                proxy_client.send(text.encode())
                print('send to server:'+server_ip,str(server_port),'>>',text)
                text=''
            re = proxy_client.recv(1024).decode()            
            if  re:
                client.send(re.encode())       
                print('resp to client:'+addr[0],addr[1],'>>',re)
                re=''
        except:
            print(addr[0],addr[1],'>>say goodby')
            break
def proxy():    
    while True:
        client,addr=s.accept()                                                #4、接受客户端连接
        threading._start_new_thread(handle,(client,addr,'127.0.0.1',9999))    #5、多线程代理服务

if __name__ == '__main__':
    proxy()


'''
Python TCP 客户端(配合Tcp代理服务器) by 郑瑞国
1、建立网络套接字c
2、建立网络连接
3、收发信息
'''
import socket
 
c = socket.socket()              #1、建立网络套接字c
c.connect(('127.0.0.1',9998))    #2、建立网络连接
while True:                      #3、收发信息
    text = input('send:')
    if not text:
        continue
    c.send(text.encode())
    re = c.recv(1024).decode()
    print(re)
'''
Python socket TCP多线程服务器 by 郑瑞国
1、建立网络套接字s
2、绑定地址
3、监听
4、接受客户端连接
5、多线程处理客户端消息
'''
import socket
import threading
 
s = socket.socket()                                          #1、建立网络套接字s
s.bind(('0.0.0.0',9999))                                     #2、绑定地址
s.listen(5)                                                  #3、监听
def handle(client,addr):
    while True:
        try:
            text = client.recv(1024)
            if not text:
                client.close()
            client.send(text)
            print(addr[0],addr[1],'>>',text.decode())
        except:
            print(addr[0],addr[1],' >> say goodby')
            break
    
while True:
    client,addr=s.accept()                                   #4、接受客户端连接
    threading._start_new_thread(handle,(client,addr))        #5、多线程处理客户端消息

猜你喜欢

转载自blog.csdn.net/zheng_ruiguo/article/details/85629868
今日推荐