【发布时间】:2011-02-24 23:11:06
【问题描述】:
我在使用 C# 中用于发送 UDP 数据的套接字时遇到问题 --- 基本上,套接字不会从网络上的其他计算机接收任何数据,直到首先通过套接字发送了一些数据.
不太清楚为什么它的行为很奇怪,我希望你们能指出我正确的方向——代码示例如下。
谢谢
-- 丹
private Socket UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress bindIP = BindingIP;
if (bindIP == IPAddress.None)
throw new Exception("Error binding to network interface \"" + _mcinter + "\" - interface not found");
//recieve data from any source
IPEndPoint LocalHostIPEnd = new IPEndPoint(bindIP, Target_Port);
//init Socket properties:
UDPSocket.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.NoDelay, 1);
//allow for loopback testing
UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
//extremly important to bind the Socket before joining multicast groups
UDPSocket.Bind(LocalHostIPEnd);
//get in waiting mode for data - always (this doesn't halt code execution)
UDPSocket.BeginReceiveFrom(...);
【问题讨论】:
-
你能改写一下吗?你怎么能期望收到尚未发送的东西?
-
我的意思是,在应该进行接收的计算机将一些数据发送到其他计算机之前,我无法从网络上的其他计算机接收数据。