【发布时间】:2012-02-29 02:54:41
【问题描述】:
如果我这样做:
byte[] buffer = new byte[1024];
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint remote = new IPEndPoint(IPAddress.Parse("12.34.56.78"), 1337);
sock.ReceiveFrom(buffer, ref remote);
ReceiveFrom 方法是否只接收来自正在传递的端点的数据包?文档说明如下:
对于无连接协议,ReceiveFrom 将读取第一个 入队的数据报接收到本地网络缓冲区。
这是否意味着传递的 EndPoint 仅用于存储数据包来自的主机的 EndPoint,并且根本不影响 ReceiveFrom 方法的行为?如果是这样,为什么它需要作为“ref”而不是“out”传递?
【问题讨论】:
-
经过几次测试后,我发现通过的端点值无关紧要。它仅用于存储。但是我仍然不知道为什么它必须作为参考传递。
-
EndPoint 不是结构体吗?
-
是的,你是对的。虽然这对我的情况没有影响。
-
使用 sock.ReceiveFrom() 而不是列出的 remote.ReceiveFrom() 可能会更好。
-
为什么我总是犯那些愚蠢的错字?这就是我的意思,对不起。
标签: c# sockets reference udp endpoint