目录
下面实现简单的服务端和客户端的双工通信:
# 导包
from socket import *
from threading import Thread
# 服务端:实现双工通讯
# 定义recv_data函数 用于接收数据
def recv_data():
# 循环接收客户端发送的数据
while True:
# 接收客户端1024字节数据
recv_data = client_socket.recv(1024) # 最大接收1024字节
# 解码
recv_content = recv_data.decode("gbk")
# 打印客户端发送的数据
print(f"客户端说:{recv_content},来自:{client_info}")
# 循环结束条件
if recv_content == 'end':
print("结束接收消息!!!")
# 循环结束
break
# 定义send_data函数 用于发送数据
def send_data():
# 循环向客户端发送数据
while True:
# 输入数据
msg = input(">>>")
# 像服务端发送
client_socket.send(msg.encode("gbk"))
# 循环结束条件
if msg == "end":
print("结束发送消息!!!")
# 循环结束
break
if __name__ == '__main__':
# 建立TCP套接字
server_socket = socket(AF_INET, SOCK_STREAM)
# 监听ip地址和端口号
server_socket.bind(("127.0.0.1", 8849))
# 设置最大连接数5
server_socket.listen(5)
# 打印状态
print("等待连接!!!")
# 接收客户端连接的数据
client_socket, client_info = server_socket.accept()
# 打印状态
print("一个客户端建立连接成功!!!")
# 创建线程
t1 = Thread(target=recv_data)
t2 = Thread(target=send_data)