首页 > 代码库 > Python socket编程客户端与服务端通信

Python socket编程客户端与服务端通信

[本文出自天外归云的博客园]

目标:实现客户端与服务端的socket通信,消息传输。

客户端

客户端代码:

from socket import socket,AF_INET,SOCK_STREAM#服务端的ip地址server_ip = 127.0.0.1#服务端socket绑定的端口号server_port = 20000if __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"))                breakif __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编程客户端与服务端通信