2
我有一些连接到多播地址的网络代码,但在几秒钟后断开连接。任何人都可以找出这个代码有什么问题吗?C#UDP多播在几秒后断开连接
String Target_IP = "224.1.2.3";
int Target_Port = 31337;
IPEndPoint LocalEP = new IPEndPoint(IPAddress.Any, Target_Port);
IPEndPoint RemoteEP = new IPEndPoint(IPAddress.Parse(Target_IP), Target_Port);
using (Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
//s.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.NoDelay, 1);
//s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
s.Bind(LocalEP);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 0);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(Target_IP)));
s.Connect(RemoteEP);
// TODO
}
Connect()函数被调用后,它报告连接,但等待一两秒钟,并断开连接。我绑定到错误的端口或什么?每个在线教程似乎都采用了不同的方式。
如果我尝试在没有连接功能的情况下发送数据,则会收到一条错误消息,内容为“由于套接字未连接且未提供地址,因此不允许发送或接收数据请求”。那么我怎么发送数据而不连接? – Nippysaurus 2009-08-28 04:18:19
按照错误提示并指定要发送到http://msdn.microsoft.com/en-us/library/eae4f5y0.aspx的结束点。您在这里的关键是了解不同的方法.Net用于UDP和TCP。正如你已经发现的,Connect对于UDP和TCP意味着不同的事情。 – sipwiz 2009-08-28 05:01:08
你给我的链接是UDP,但根本不包括多播。 – Nippysaurus 2009-08-28 06:31:24