1. 程式人生 > >Python socket編程客戶端與服務端通信

Python socket編程客戶端與服務端通信

eve sock 系統 con conn 綁定 idt 註意 服務

[本文出自天外歸雲的博客園]

目標:實現客戶端與服務端的socket通信,消息傳輸。

客戶端

客戶端代碼:

from socket import socket,AF_INET,SOCK_STREAM

#服務端的ip地址
server_ip = 127.0.0.1
#服務端socket綁定的端口號
server_port = 20000

if __name__ == __main__:
    while True:
        str_msg = input("請輸入要發送信息:")
        if str_msg != "":
            bytes_msg 
= bytes(str_msg, encoding = "gbk") client = socket(AF_INET,SOCK_STREAM) client.connect((server_ip,server_port)) client.send(bytes_msg) print(str(client.recv(8192),encoding="gbk")) client.close()

客戶端(Mac系統)運行截圖:

技術分享

服務端

服務端代碼:

from
socketserver import BaseRequestHandler, TCPServer #指定接收消息的客戶端ip列表 target_clients = ["10.235.0.109"] class EchoHandler(BaseRequestHandler): def handle(self): for target_client in target_clients: if target_client in self.client_address: print(Got connection from
, self.client_address) msg = self.request.recv(8192) if not msg: break ret_msg = bytes("自動回復:消息已收到!", encoding = "gbk") self.request.send(ret_msg) print(str(msg, encoding = "gbk")) break if __name__ == __main__: from threading import Thread NWORKERS = 16 #綁定socket服務端所在ip和端口號 serv = TCPServer((‘‘, 20000), EchoHandler) for n in range(NWORKERS): t = Thread(target=serv.serve_forever) t.daemon = True t.start() serv.serve_forever()

服務端(Windows系統)運行截圖,註意要設置cmd活動頁代碼為936(chcp 936)方可顯示中文,設置cmd屬性中的字體為點陣字體:

技術分享

參考資料:Python3-cookbook 11.2 創建TCP服務器

Python socket編程客戶端與服務端通信