2015-02-24 25 views
0

SO_SNDBUF和SO_RCVBUF根据套接字缓冲区大小定义。 但是在UDP服务器套接字的情况下,这意味着其与该套接字进行通信的所有目的地的总体大小,或者它与远程地址的单个连接的大小。UDP的SO_SNDBUF和SO_RCVBUF设置

示例: 用户A从3.3.3.3在端口1234

用户B从4.4.4.4发送数据端口50000的端口发送数据端口50000到服务器1.1.1.1到服务器1.1.1.1 1234

用户C从5.5.5.5端口50000端口将数据发送到服务器1.1.1.1 1234

有你see.If SO_SNDBUF和SO_RCVBUF设置为32KB的单一服务器套接字这是否意味着总发送缓冲区服务器上的大小和总接收缓冲区大小应为32KB或96KB?

回答

1

在UDP的情况下,没有连接,所以'来自远程地址的单一连接'没有意义。

+0

你好 可能有逻辑连接,你可以在netstat socket中看到客户端的其他地址。 至于Java,你可以启动连接操作,它将设置远程地址。 http://download.java.net/jdk7/archive/b123/docs/api/java/net/DatagramSocket.html#connect%28java.net.InetAddress,%20int%29 但问题是关于缓冲区是整体还是每个目的地。 祝你好运 Yulian Oifa – 2015-02-24 10:35:56

+0

我们没有真正的联系。这只是本地API的一个技巧。例如,一端可能是。 '连接',而另一个不是。无论哪种方式你的问题基本上是毫无意义的。如果连接了这个端口,则没有其他人可以发送或发送,所以缓冲区当然只适用于连接目标。如果没有,不是。 – EJP 2015-02-24 11:08:55