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


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

目標:實現客戶端與服務端的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服務器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM