当前位置:   article > 正文

Python创建一个TCP服务器_python tcpserver

python tcpserver

创建一个TCP服务器

我们想实现一个通过TCP协议同客户端通信的服务器

解决方案

创建TCP服务器的一种简单方式就是利用socketserver库。比如, 下面是一个简单的echo服务示例:

from socketserver import BaseRequestHandler, TCPServer


class EchoHandler(BaseRequestHandler):
    def handle(self):
        print('Got connection from ', self.client_address)
        while 1:
            msg = self.request.recv(8192)
            if not msg:
                break
            self.request.send(msg + ' 欢迎你'.encode('utf-8'))


if __name__ == '__main__':
    serv = TCPServer(('', 20000), EchoHandler)
    serv.serve_forever()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这份代码中, 我们定义了一个特殊的处理类,它实现了一个handle()方法来服务于客户端连接。这里的request属性就代表着底层的客户端socket, 而client_address中包含了客户端的地址。

要测试这个服务端程序,首先运行这个脚本,然后再打开一个客户端脚本,将其连接到服务端上。示例如下:

from socket import socket, AF_INET, SOCK_STREAM

s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 20000))
s.send('Hello'.encode('utf-8'))
t = s.recv(8192)
print(t.decode('utf-8'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

结果如下:

# 服务器端
D:\Python39\python.exe D:/My_Project/TCP_server.py
D:\Python39\python.exe D:/My_Project/TCP_server.py
Got connection from  ('192.168.1.9', 62719)    # 另一台电脑连接服务端
Got connection from  ('192.168.1.13', 49914)   # 本地机访问服务端
Got connection from  ('192.168.1.13', 49915)
Got connection from  ('192.168.1.13', 49916)

# 客户端
D:\Python39\python.exe D:/My_Project/socket_client.py
Hello 欢迎你

Process finished with exit code 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1013390
推荐阅读
相关标签
  

闽ICP备14008679号