关于UDP通信中客户端指定端口接收的问题

宇文XX 2016-01-12 04:22:32
假如我设计了一个服务器,一个客户端,客户端中有A,B两个线程。A,B两个线程同时在运行。
其中A中调用了recvfrom(chatsock)用来接收聊天消息
B中调用了recvfrom(videosock)用来接收视频消息
现在我在服务器中调用了sendto消息,那么A,B究竟哪一个会响应recvfrom呢?
如果我想在服务器发送聊天消息的时候客户端能相应A中的recvfrom,发送视频消息的时候客户端能相应B中的recvfrom,该怎么办?
还是只能在客户端中调用一个recvfrom。然后通过接受到的消息判断是聊天消息还是视频消息?
...全文
865 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
A和B绑定到不同的端口,就可以。这个完全ok 你在视频端口处理视频 消息端口处理消息。这样分开最好了
宇文XX 2016-01-20
  • 打赏
  • 举报
回复
引用 8 楼 Eleven的回复:
[quote=引用 7 楼 qq_24728063 的回复:] [quote=引用 6 楼 ZealotSparc 的回复:] A和B绑定到不同的端口,就可以。 但是最好还是通过设计一个应用层协议来区分不同的数据内容。
有没有相关方面的知识?[/quote] 你完全可以自定义一个协议,一个线程接收,判断是聊天消息,就将信息交给聊天消息的处理线程去处理,如果是视频消息,就将数据交给处理视频消息的线程去处理。即将消息的接收和消息的处理从逻辑上分开。[/quote] 自己写协议啊,还没有学这方面的知识,有没有相关的书籍?
宇文XX 2016-01-19
  • 打赏
  • 举报
回复
引用 6 楼 ZealotSparc 的回复:
A和B绑定到不同的端口,就可以。 但是最好还是通过设计一个应用层协议来区分不同的数据内容。
有没有相关方面的知识?
Eleven 2016-01-19
  • 打赏
  • 举报
回复
引用 7 楼 qq_24728063 的回复:
[quote=引用 6 楼 ZealotSparc 的回复:] A和B绑定到不同的端口,就可以。 但是最好还是通过设计一个应用层协议来区分不同的数据内容。
有没有相关方面的知识?[/quote] 你完全可以自定义一个协议,一个线程接收,判断是聊天消息,就将信息交给聊天消息的处理线程去处理,如果是视频消息,就将数据交给处理视频消息的线程去处理。即将消息的接收和消息的处理从逻辑上分开。
ZealotSparc 2016-01-14
  • 打赏
  • 举报
回复
A和B绑定到不同的端口,就可以。 但是最好还是通过设计一个应用层协议来区分不同的数据内容。
宇文XX 2016-01-13
  • 打赏
  • 举报
回复
引用 3 楼 bluesen 的回复:
建议好好看书。你哪里看出无法解决?
感谢,绑定端口之后确实能够够实现。
宇文XX 2016-01-12
  • 打赏
  • 举报
回复
引用 3 楼 bluesen 的回复:
建议好好看书。你哪里看出无法解决?
因为recvfrom函数无法指定端口接收的,我想到的一个办法是绑定客户端的套接字端口,不过我还没实现,书上也没写这个可不可以,而且我对recvfrom的机制也不太清楚,所以我就来这里提问了。
bluesen 2016-01-12
  • 打赏
  • 举报
回复
建议好好看书。你哪里看出无法解决?
宇文XX 2016-01-12
  • 打赏
  • 举报
回复
引用 1 楼 bluesen 的回复:
地址的三要素,协议(如tcp或udp),ip地址,端口 相同的ip下不同的应用,通过端口来区分就可以。 你闭门造车不行,得参考现有成熟的应用层协议,如rtp
没太弄懂,也就是说现有的UPD协议无法解决同一ip不同端口的问题,rtp协议就可以?
bluesen 2016-01-12
  • 打赏
  • 举报
回复
地址的三要素,协议(如tcp或udp),ip地址,端口 相同的ip下不同的应用,通过端口来区分就可以。 你闭门造车不行,得参考现有成熟的应用层协议,如rtp

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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