tcp聊天器(服务端-多任务版)

服务器的功能在于转发客户端发送的数据给指定方
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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值