当前位置: 首页 > 编程笔记 >

Python socket处理client连接过程解析

华鹭洋
2023-03-14
本文向大家介绍Python socket处理client连接过程解析,包括了Python socket处理client连接过程解析的使用技巧和注意事项,需要的朋友参考一下

socket只能处理一个client连接,如果需要并发处理多个链接则需要使用socketserver,下面是代码示例以及注释

server端

import socketserver
#之前的socket只能同时处理一个客户端,当需要并发处理client发送的信息是需要使用到socketserver,下面创建一个类,继承socketserver其对应实例就有并发能力
class My_Tcp_Handler(socketserver.BaseRequestHandler):
  #下面的handler是自己定义的server与client交互的过程,所有交互过程都在此方法内部实现.方法名handle是固定的
  def handle(self):
    while True:
      try:
        #下面将收到的数据打印并且大写后发回给客户端
        self.data = self.request.recv(1024)
        print(self.data.decode(encoding="utf-8"))
        self.send_data = self.data.decode(encoding="utf-8").upper().encode(encoding="utf-8")
        self.request.sendall(self.send_data)
      except ConnectionResetError as e:
        print("一个客户端关闭了连接")
        break

#实例化socketserver
My_server = socketserver.ThreadingTCPServer(("0.0.0.0", 8888), My_Tcp_Handler) #ThreadingTCPServer是使用多线程,ForkingTCPServer是使用多进程处理并发
#启动实例
My_server.serve_forever()

下面是client端

import socket
client = socket.socket()
client.connect(("127.0.0.1", 8888))
while True:
  msg = input()
  if len(msg) == 0:
    continue
  client.send(msg.encode(encoding="utf-8")) #如果发送中文需要对其进行encode,接收也需要decode;英文前面直接加b指定类型
  client_rec = client.recv(1024).decode(encoding="utf-8")
  print("client_rec:", client_rec)
client.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我正在优化复杂模拟的参数。我使用多处理模块来增强优化算法的性能。我在http://pymotw.com/2/multiprocessing/basics.html上了解了多处理的基础知识。复杂的模拟根据优化算法中给定的参数持续不同的时间,大约1到5分钟。如果参数选择不正确,则模拟可能会持续30分钟或更长时间,结果将无用。因此,我正在考虑为多处理建立超时,该超时将终止所有持续超过定义时间

  • 本文向大家介绍JavaScript处理解析JSON数据过程详解,包括了JavaScript处理解析JSON数据过程详解的使用技巧和注意事项,需要的朋友参考一下 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包

  • 本文向大家介绍Spring Cloud Stream异常处理过程解析,包括了Spring Cloud Stream异常处理过程解析的使用技巧和注意事项,需要的朋友参考一下 应用处理 当消费者在处理接收到的消息时,有可能会由于某些原因而抛出异常。若希望对抛出来的异常进行处理的话,就需要采取一些异常处理手段,异常处理的方式可分为三种:应用层面的处理、系统层面的处理以及通过RetryTemplate进行

  • 本文向大家介绍Pycharm连接gitlab实现过程图解,包括了Pycharm连接gitlab实现过程图解的使用技巧和注意事项,需要的朋友参考一下 一。从gitlab上clone代码到本地pycharm (一)。gitlab上找到创建项目的连接地址,分两种: 1. http连接方式: http://10.22.1.72/derekchen/cxg.git 2. ssh连接方式: git@10.22

  • 本文向大家介绍Python 异常处理Ⅳ过程图解,包括了Python 异常处理Ⅳ过程图解的使用技巧和注意事项,需要的朋友参考一下 异常的参数 一个异常可以带上参数,可作为输出的异常信息参数。 你可以通过except语句来捕获异常的参数,如下所示: 变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。 元组通常包含错误字符串,错误数字,错误位置。 实例 以下为单个异常的实