使用相同的套接字进行UDP发送和接收有利有弊吗?使用C和C#

时间:2014-05-29 23:33:18

标签: c# c sockets udp datagram

我在Linux VM上有C的UDP服务器,在主机Windows 7机器上有C#的UDP客户端。

UDP服务器侦听连接。 UDP客户端连接然后发送请求。服务器接收请求,处理它,然后发回一个回复(少于100个字节)。 UDP客户端收到回复并做了一些工作。这个过程一遍又一遍地重复,连续每秒约10个请求/回复对。

目前,我有UDP服务器在端口11000上侦听和接收并在端口10001上发送,客户端在端口10001上侦听和接收,并在端口11000上发送。用于侦听的套接字在两者上保持打开状态两侧。通过发送,每一方都打开发送套接字,发送数据,然后关闭,直到收到下一个请求。到目前为止,这是有效的。

我知道应该可以使用SAME套接字进行发送和接收。我还没有能够让它工作,但这不是我的问题。我的问题是,在我的情况下,使用相同的套接字是否有明显的优势,如果它现在正常工作?有什么不利吗?或者在我当前的实现中有两个独立套接字的任何优势?

谢谢。

1 个答案:

答案 0 :(得分:1)

当然,在做你正在做的事情,资源浪费会受到惩罚。

每次创建套接字时,发送数据并将其销毁,即表示您正在分配/取消分配资源。

假设你有一个很高的消息率,每次发送你创建/销毁一个套接字的消息,并且套接字不会立即销毁(至少在TCP中,可能在UDP中我错了)。

如果你只能使用一个插座,那么当你用手机跟别人说话时,你每次想要在谈话中说些什么并扔到垃圾桶时都不买新的插座。 ,是吗? ;)