关于将EndPoint传递给Socket.ReceiveFrom()的不确定性如果我这样做:byte[]buffer=newbyte[1024];套接字sock=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPEndPointremote=newIPEndPoint(IPAddress.Parse("12.34.56.78"),1337);sock.ReceiveFrom(buffer,refremote);ReceiveFrom方法是否只从它被传递到的端点接收数据包?该文档说明如下:使用无连接协议,ReceiveFrom将接收到的第一个排队数据报读取到本地网络缓冲区中。这是否意味着传递的EndPoint仅用于存储数据包来自的主机的EndPoint而根本不影响ReceiveFrom方法的行为?如果是这样,为什么需要将其作为“ref”而不是“out”传递?请注意,ReceiveFrom方法是recvfromWinSock函数的托管包装器。这个函数接受一个指向sockaddr结构的指针,它是可选的,并且在调用者端分配/释放。考虑到这一点,我有一些理论为什么EndPoint作为ref而不是作为传递:了解更多关于C#学习教程,我希望你会更多地关注它——也许为了与WinSock功能保持一致,EndPoint是由调用者分配,因此由ref传递。也许EndPoint在某些时候被认为是一个可选参数,但这从未被实现(我检查过,它必须是非空的)。对于某些协议,可能会通过EndPoint参数传递处理方向。甚至未来的协议:-)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
