多线程TCP服务器

1.模块
TCP多线程服务器的创建也很简单!需要引进模块threading。threading模块用于提供线程相关的操作,线程是应用程序中工作的最小单元。
2.代码

import socket
import threading

bind_ip = "127.0.0.1"                   
bind_port = 1234

server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind((bind_ip,bind_port))        #确定服务器需要监听的IP地址和端口

server.listen(5)						#设置最大连接数为5
data = input("请输入数据:")

print("[*] Listening on %s:%d" % (bind_ip,bind_port))

def handle_client(client_socket):       #客户处理线程
    
    request = client_socket.recv(1024)  
    
    print("[*] Received: ",request.decode("UTF-8"))    #打印出客户端发送得到的内容
  
    client_socket.send(data.encode("UTF-8"))          #输入返还一个数据
    
    client_socket.close()
    
    
while True:
    client,addr = server.accept()
    
    print("[*] Accepted connection from: %s:%d" % (addr[0],addr[1]))
    
    client_handler = threading.Thread(target=handle_client,args=(client,))   
    client_handler.start()    #挂起客户端线程,处理传入数据

在while循环中当有一个客户端成功连接后,我们将接收到的客户端套接字对象保存到client变量中,将远程连接的细节保存到addr变量中。接着我们以handle_client函数为回调函数创建了一个新的线程对象,将客户端套接字对象作为一个句柄传递给它。然后我们启动线程开始处理客户端连接。为了让客户端和服务器端能做一个简单的数据传输我们改进上一篇中的客户端代码!

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket

s = input("输入数据:")
target_host = "127.0.0.1"
target_port = 1234

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client.connect((target_host,target_port))
client.send(s.encode("UTF-8"))            #增加一个向服务器发送数据的函数

response = client.recv(4096)                   
print(response.decode("UTF-8"))

先运行服务器端代码再运行客户端代码。进行简单的数据传输,结果如下图:
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶晶娃在战斗

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值