zoukankan      html  css  js  c++  java
  • 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服务器

  • 相关阅读:
    pyton 类(4) 静态方法
    python 类(3) property
    python 类(2)
    python 类(1)
    python 文件写入
    python 文件读取
    python 高阶函数 lamdad reduce map
    python 时间转换
    GDI+_从Bitmap里得到的Color数组值解决方案
    32位机,CPU是如何利用段寄存器寻址的
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/6890383.html
Copyright © 2011-2022 走看看