关于UDP的receive问题

broadury 2005-06-11 07:24:20
要实现基于UDP的可靠文件传输.就需要对每一个包都标上序号.将其发送之后还要receive对方的确认信息。但同时需要receive其他主机的请求。这样的话,某一时刻,当接收到一个报文的话,我应该如何处理呢?
如果使用多个线程,每个线程都receive,那会不会被不该接收的线程接收了呢?
应该如何解决呢?
...全文
425 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lookie 2005-06-16
  • 打赏
  • 举报
回复
你的设计思想有问题,几个接收线程一起接收,那就天下大乱了。

应该只有一个接收线程接收,这是主线程,当接收到一个请求后,新建一个线程进行处理。原来的接收进程继续接收。这样就行了。
broadury 2005-06-11
  • 打赏
  • 举报
回复
我也想,但是我们要做网络作业.要求就是用udp实现的.郁闷
dazhu2 2005-06-11
  • 打赏
  • 举报
回复
你用tcp不是更好控制,采用异步
siugwan 2005-06-11
  • 打赏
  • 举报
回复
gz
broadury 2005-06-11
  • 打赏
  • 举报
回复
但是每一个线程需要判断发送超时,这是通过接收超时来实现的。所以,每一个线程都需要receive,这样的话,就不能只用一个线程接收了
ivorstar 2005-06-11
  • 打赏
  • 举报
回复
可以模仿Tcp的控制机制啊,或者更简单的:在你的应用层协议建立连接时,让接收和发送端商定一个值,在每一个数据报的报头都加入这个值,但是觉得不能使用多线程receive,处理不好应该会被其他线程误收,可以在程序中维持一个发送线程的列表,但是用一个线程接受所有的确认报文,然后看这个报文对应哪个发送线程。
提供点建议,仅供参考

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧