社区
网络及通讯开发
帖子详情
UDP并发的问题:服务端的端口号接受的数据不容易区分!
wirner
2013-05-14 02:31:29
作为udp服务器,要能处理并发请求,那么在一个端口侦听就会出现数据紊乱,要区别出对应客户端的数据是不容易的。
1 . 有网友说通过就发送过来的IP地址来区分是那个终端发生过来的。
2 . 服务端申请系统临时端口来与客户端通信,客户端需记下新的服务器端口地址,这一单一通道只与该客户端交互,交互完毕关掉临时端口,临时端口的申请可以通过再建立socket 来实现。
3 . 还有提到用消息队列;
不知道用那种方式比较好,各位不惜赐教,共同探讨。
...全文
430
2
打赏
收藏
UDP并发的问题:服务端的端口号接受的数据不容易区分!
作为udp服务器,要能处理并发请求,那么在一个端口侦听就会出现数据紊乱,要区别出对应客户端的数据是不容易的。 1 . 有网友说通过就发送过来的IP地址来区分是那个终端发生过来的。 2 . 服务端申请系统临时端口来与客户端通信,客户端需记下新的服务器端口地址,这一单一通道只与该客户端交互,交互完毕关掉临时端口,临时端口的申请可以通过再建立socket 来实现。 3 . 还有提到用消息队列; 不知道用那种方式比较好,各位不惜赐教,共同探讨。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
btkernel
2013-05-18
打赏
举报
回复
UDP一般是不存在并发的情况,不太清楚你的业务逻辑,一般的处理方式有以下2种情况: 1,服务器不需要保存客户端的上下文逻辑数据: 这种情况处理起来比较简单,以下为大概的处理流程: 1,ListenThread接收到数据后,把数据和对方的端口和IP插入数据包队列 2,WorkThread线程处理数据包队列中的数据后把需要发送的数据插入发送队列 3,SendThread发送数据给客户端 2,服务器需要保存客户端的上下文数据: 这种情况下稍微比较复杂一点,如果可以用TCP就尽量用TCP,TCP比较简单一点 一般的做法是给每个客户端分配一个唯一的ID(GUID),第一次和服务器通信时需要一个初始化的过程, 类似TCP的握手操作,在服务端保存每个ID的上下问数据,这样服务器就可以识别每个客户端了。 以上的方式还有些小问题,就是客户端发送数据的时候都需要带一个ID号,ID号一般都是比较长的字符 串,在服务器上对数据进行分类的时候效率也不是很高,所以最好是用客户端的IP+PORT的整型数据作为 KEY关联起来,这样在客户端的每个SOCKET需要定时的发心跳包服务端来保持客户端的外网端口不会比路 器关闭。其它的细节就需要自己慢慢琢磨下了。 在以前的P2P项目中就用的第二种的方式,因为需要进行内网穿透和可靠传输的处理。 以上希望对你有所帮助
wirner
2013-05-14
打赏
举报
回复
没有人能指点一下我嗎
【Linux】深入理解传输层:
端口号
、
UDP
协议及其应用场景
本文围绕
端口号
和
UDP
协议展开。先介绍
端口号
范围划分、知名
端口号
,探讨进程绑定
端口号
的
问题
。接着详细解析
UDP
协议,包括格式、特点、面向
数据
报传输、缓冲区等,还提及使用注意事项,最后阐述
UDP
适用于实时通信、视频流等对实时性要求高但对
数据
完整性要求不高的场景。
四:基于
UDP
的
服务端
/客户端
本文详细解析了
UDP
在传输层的特性,包括不可靠性、流控制缺失、工作原理,以及如何在
服务端
/客户端实现
数据
传输。重点介绍了
UDP
在多媒体
数据
传输中的优势和TCP与
UDP
的速度差异。最后提到了在Windows平台上的实现示例。
socket(套接字)实现
udp
通信
本文介绍了
UDP
通信的基础知识,包括源IP和目的IP地址、
端口号
的概念,以及网络字节序的重要性。通过示例详细讲解了
UDP
协议的特点,如无连接、不可靠传输和面向
数据
报。同时,展示了使用socket接口创建、绑定、发送和接收
UDP
数据
的过程,并讨论了如何优化服务器,如使用INADDR_ANY进行多网卡通信。最后,提到了客户端和服务器端的命令行参数应用。
Linux:网络编程套接字及
UDP
本文详细介绍了Linux环境下网络编程的基础知识,包括网络通信的本质、IP地址和
端口号
的作用、TCP与
UDP
的区别、网络字节序的概念以及socket接口的使用。重点讲解了
UDP
协议的使用,包括
服务端
和客户端的创建、运行、端口和IP地址的处理,以及如何实现一个简单的聊天室和多线程交互。
【TCP&
UDP
】为什么 tcp/
udp
的
端口号
可以重复?
同一台机器的同一个端口可以被一个进程用于同时监听TCP和
UDP
请求。端口的唯一性是基于
端口号
与协议类型组合,操作系统根据IP
数据
包的协议字段
区分
TCP和
UDP
数据
。端口是一种抽象的软件结构,通过
端口号
与进程关联,允许多个连接通过不同的四元组(src_ip, src_port, dst_ip, dst_port)存在。TCP/IP中,小于256的
端口号
作为保留端口,由全局分配,而大于此数值的端口则由本地分配。操作系统能根据接收到的
数据
包的协议字段决定将其交给相应的协议栈处理。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章