2 tiigger tiigger 于 2017.09.08 09:34 提问

c# udp sendto目标未开 receivefrom接收不到数据 50C

使用UDP转发数据,转发程序接收数据发给另一个程序C,如果这时接收程序C关了,那么转发程序不再接收数据,而第一个程序一直在发数据

A客户端调用sendto发数据给B客户端
B客户端接受数据后,sendto给C客户端
如果C客户端未开,B发送1条数据后,发送后无异常也不知道成功没,但B不再接收A客户端的数据,即receiveFrom方法也不能用
如果C客户端一直开,则B客户端既能接收数据,又能发送数据

B就是个转发的,C断了之后,B竟然不接收A的数据了

请问大神们,这是个什么原因

1个回答

qq_39765977
qq_39765977   2017.09.08 11:38

你现在,是开发中间转发功能,B客户端吗?
一般使用socket ,收发数据时,都会检测socket是否有效,若无效,便不再收发数据,并返回错误码,函数调用者,检测返回码并处理。
是在编码中,开发者自己实现的,或有自动生成的,需要自己修改.
是一对一转发,??
请把使用情景说明清楚,
这应该在编码中自己判断处理解决

tiigger
tiigger 我只是想找出来这个更深层次的原因,也能对socket更加了解
3 个月之前 回复
tiigger
tiigger socket一直有效,而且udp也无法判断是否连接,也不会报异常,建议你试一下,当一个socket使用udp的方式发送数据到一个断开的客户端后,他是不会再接收到数据的,这个问题我已解决,用了一个新的socket专门发数据
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片