python中的socketserver模块与多线程

    早就听说socketsever特别厉害,可以简化客户端和服务端的实现,尤其是在多线程socket通话的情境下,可以说是一个比较高级的模块


python下的socket编程我们已经学过了,而今天,我们来使用socketsever这个模块,写一个TCP的多线程socket


服务端:
import socketserver

class Server(socketserver.BaseRequestHandler):        # 使用socketserver模块 ,必先定义一个继承自BaseRequestHandler类
    def handle(self):
        print('New connection:',self.client_address)
        try:
            while True:
                buf = self.request.recv(1024)
                if not buf:
                    break
                print('Client data:',buf.decode())
                self.request.send(buf)            # 收到消息重发客户端
        except ConnectionResetError:              # 捕捉客户端关闭信息 
            print('One connection closed')

if __name__ == '__main__':
    HOST = 'localhost'  
    PORT = 8001 
    server = socketserver.ThreadingTCPServer((HOST,PORT),Server)     # 实现多线程通话
    server.serve_forever()          # 持续运行


客户端:

import socket

HOST = 'localhost'  
PORT = 8001
sock = socket.socket()
sock.connect((HOST, PORT))

while True:
    message = input('Please input:')
    sock.send(bytes(message, 'utf8'))
    recv = sock.recv(1024)
    print(str(recv, 'utf8'))
sock.close()


运行截图:

客户端运行:



服务端运行:



当有多个客户端连接时,服务端就会打印其客户端地址,并开始接收其消息



  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

姜亚轲

你花钱的样子真帅

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

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

打赏作者

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

抵扣说明:

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

余额充值