做过UDP收发的朋友请进来,一个不需要思考的问题! (100分)

  • 主题发起人 一个过客
  • 开始时间

一个过客

Unregistered / Unconfirmed
GUEST, unregistred user!
最近准备写一个UDP协议捕获的东西,做一个调查:

我们平时写UDP收发的软件,一般的流程是如何的?

[red]服务器端[/red]
1、服务器端用一个UDP专门负责接收,另一个UDP专门负责发送,也就是说,
服务器端占用2个固定的UDP端口。一般Indy控件就是这样的,一个是
TIdUDPClient,一个TIdUDPServer
2、服务器端用一个UDP负责接收,客户端发数据过来之后,服务器动态创建
一个UDP负责给这个客户端发送数据,然后释放掉。也就是说,服务器端
占用一个固定UDP端口,外加动态的不定的UDP端口。
3、服务器端只用一个UDP,负责发送和接收所有工作。一般FastNet控件就是
这样的,只有一个TNMUDP控件,可以做server和client

[red][客户端][/red]
同上

[red][协议][/red]
主要是关于端口号
1、服务器和客户端使用固定的端口号进行通讯(端口号写死在程序里)
2、客户端向服务器发送数据之后,服务器通过客户端读取数据事件的那个的参数来确定
客户端的端口号,然后向这个端口发送数据。这里的[blue]事件参数[/blue]指的是
NMUDP.OnDataReceived里面的FromIP/Port和IdUDPServer.OnUDPRead里面的
ABinding.PeerIP/ABinding.PeerPort
3、客户端使用固定端口号,服务器端动态创建UDP答复该端口,也就是说服务器负责发送
的UDP没有固定端口号。

您的选择是

服务器:
客户端:
协议:
 
如果自己没写过,但是知道其他软件/协议工作方式的也可以,比如icq,qq,dns等
 
其实只用一个TidUDPServer就应该可以了,收和发都它来。
不过我都是直接写API,客户端断口不固定,服务器每次读的时候从recvfrom参数中取得
 
看上去还是 服务器:1 客户端:1 稍多一点。

大家继续
 
端口固定

收发分开
 
还是 1 1 1
小生愚见,虽然资源占用较多,但是调试开发效率要好一些,也比较稳定。
不过端口号我不会写死在程序里,可以进行动态配置
 
对于完全主/从结构的:2 4(客户端主动向服务端通信不需要占用固定端口) 2
对于像QQ这样带有P2P性质的:2 2 2
 
势均力敌了,呵呵
 
顶部