单线程下TCP循环等待接收客户端消息

Posted zuzhuangmengxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单线程下TCP循环等待接收客户端消息相关的知识,希望对你有一定的参考价值。

效果:

技术图片

 1 import socket
 2 
 3 
 4 def main():
 5     while True:
 6         # 创建监听套接字
 7         tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 8 
 9         # 绑定IP和Port
10         tcp_server_socket.bind((‘‘, 7788))
11 
12         # 设置为被动监听
13         tcp_server_socket.listen(128)
14 
15         # 等待客户端连接
16         print("等待客户端连接中......")
17         client_socket, client_adress = tcp_server_socket.accept()
18         print("已连接客户端:%s" % str(client_adress))
19 
20         # 再加一个循环,当客户端发出特殊指令时,再结束该客户端的连接
21         while True:
22             # 接收数据
23             recv_data = client_socket.recv(1024)
24             print(recv_data.decode(gbk))
25             # 当客户端发送的数据有内容时,回送消息给客户端
26             if recv_data:
27                 client_socket.send(已接收并处理.encode(gbk))
28             # 当客户端关闭连接时(回送消息无数据),退出循环并关闭客户端套接字
29             else:
30                 print("%s 客户端终止了连接" % str(client_adress))
31                 break
32 
33         # 关闭套接字
34         client_socket.close()
35     tcp_server_socket.close()
36 
37 
38 if __name__ == __main__:
39     main()

 

以上是关于单线程下TCP循环等待接收客户端消息的主要内容,如果未能解决你的问题,请参考以下文章

中止正在等待 Read() 语句的线程(C# 套接字编程)

C# TCP 客户端发送但不接收消息

Netty线程模型

linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息?

Boost::asio - 如何中断阻塞的 tcp 服务器线程?

recvfrom:等待完整消息(可变大小消息,线程)