服务器的功能在于转发客户端发送的数据给指定方
1.接收并转发数据 2.链接多个客户端
import socket
import threading
# 发送和接收数据处理
def send_recv_data(service_client_socket):
# 死循环接收数据
while True:
data_bin = service_client_socket.recv(1024)
print(data_bin.decode('gbk'))
# 如果内容为b""跳出循环
if data_bin:
# 转发数据(例如:循环写入文件中,当接收数据为b''时跳出循环)
service_client_socket.send('数据转发中...'.encode('utf-8'))
else:
break
# 关闭服务于客户端的套接字
service_client_socket.close()
if __name__ == "__main__":
# 创建socket,绑定端口,便主动为被动
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip_port = ('', 8989)
server_socket.bind(ip_port)
server_socket.listen(128)
# 循环接收客户端的链接
while True:
service_client_socket, ip_port2 = server_socket.accept()
# 用一个线程来转发和接收数据
t = threading.Thread(target=send_recv_data, args=(service_client_socket,))
# 守护主线程
t.setDaemon(True)
t.start()
# 没有跳出条件,就没有关闭被动套接字
# server_socket.close()