关于TCP套接字开启多进程主进程与子进程一个容易忽略的小细节

如图,在主进程里边,得到了client对象,并且开启了一个子进程来接收并处理client对象收到的来自客户端的数据,一般情况下,我们会在处理client接受数据的函数里关闭这个套接字就可以了,不需要在主函数里再关闭一次,因为只有一个client对象,但是开启了进程之后,因为子进程是完整地复制主进程的信息,所以,这时候虽然是吧client传值给了子进程,但是此时主进程中也还存在这个client套接字,并且还能够接受信息,我就在这里测试了一下,如图代码,发现主进程会打印一次接收到的数据,而后就会报错,但是子进程仍然会继续获得数据,这就验证了client会有“两份”这一说法,因为我已经在主进程里关闭了client,而子进程仍然能够使用。
开启tcp套接字多进程
开启套接字接收数据多进程
在主进程里边没有关闭套接字的情况下会出现一些问题
所以,这时候容易出现一个问题,如果还像多线程或者单线程的时候那样在主函数里不关闭client,则会出现程序开启后,主进程会影响子进程的数据接收,如图代码,在主函数里边注释掉client.close()之后,子进程会与主进程无序的交替打印数据,所以会造成程序运行bug。
最近刚刚整理了一下这个小问题,应该是发现的比较晚了,^_^。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值