python的udp服务器多进程编程

本文介绍了Python实现UDP服务器多进程编程时遇到的问题,特别是当客户端发送数据时导致的僵死进程。文章提到解决方案是在子进程中使用`while True`循环读写,并设定结束标志或超时值来避免不断派生新的子进程。然而,这种方法仍然存在一些待解决的问题。
摘要由CSDN通过智能技术生成

这里只演示os.fork派生子进程

"""
   仅仅是演示udp的多进程服务器编程,未使用信号处理函数处理僵死进程
"""

import socket, os
ser = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ser.bind(('10.10.22.101', 10000))

while True:
      data, addr = ser.recvfrom(1024)
      pid = os.fork()
      if pid:
         continue
      else:
         conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
         """
            这是一行核心代码,具体的理论基础请参见《tcp/ip协议族卷一:协议》
            "udp服务器设计这一小节"
         """
         conn.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         conn.bind(("10.10.22.101", 1000))
         """
            这里直接使用data和addr是有问题的,因为主udp进程返回等待新的udp数据报
            新的返回值data和addr可能会覆盖原有的数据,可以采取其他的解决办法
         """
         conn.connect(addr)
         conn.sendall("OK , you enter: "+data)
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值