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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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服务器

以上是关于Python socket编程客户端与服务端通信的主要内容,如果未能解决你的问题,请参考以下文章

Python------网络编程3

python编程系列---tcp服务端的简单实现

Python学习:Socket编程——多客户端通信聊天室

Python网络编程:Socket

Python网络编程:Socket

Java 网络编程