1. 程式人生 > >Python TCP Server And Client

Python TCP Server And Client

'''
Python socket TCP多執行緒伺服器 by 鄭瑞國
1、建立網路套接字s
2、繫結地址
3、監聽
4、接受客戶端連線
5、多執行緒處理客戶端訊息
'''
import socket
import threading
 
def server_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
        
def tcp_server():
    '''TCP多執行緒伺服器'''
    s = socket.socket()                                          #1、建立網路套接字s
    s.bind(('0.0.0.0',9999))                                     #2、繫結地址
    s.listen(5)                                                  #3、監聽
    print("TCP server starting on " +socket.gethostbyname(socket.gethostname())+":9999......")    
    while True:
        client,addr=s.accept()                                   #4、接受客戶端連線
        threading._start_new_thread(server_handle,(client,addr)) #5、多執行緒處理客戶端訊息


'''
Python TCP 客戶端(配合socket多執行緒伺服器) by 鄭瑞國
1、建立網路套接字c
2、建立網路連線
3、收發資訊
'''
def tcp_client(ip):
    '''TCP 客戶端'''
    c = socket.socket()              #1、建立網路套接字c
    c.connect((ip,9999))             #2、建立網路連線
    while True:                      #3、收發資訊
        text = input('send:')
        if not text:
            continue
        c.send(text.encode())
        re = c.recv(1024).decode()
        print(re)
if __name__ == '__main__':
    tcp_server()
    #ip = input('input server ip:')
    #tcp_client(ip)