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()関数が呼び出された後、接続されているとレポートされますが、1,2秒待って接続が切断されます。私は間違ったポートや何かにバインドしていますか?すべてのオンラインチュートリアルは、それを別の方法で行うようです。
接続機能を使用せずにデータを送信しようとすると、「ソケットが接続されておらず、アドレスが指定されていないため、データの送受信が許可されませんでした」というエラーが表示されます。だから私はどのように私は接続せずにデータを送信する? – Nippysaurus
エラーが表示されるのを行い、http://msdn.microsoft.com/en-us/library/eae4f5y0.aspxに送信するエンドポイントを指定します。ここでの鍵は、.NetがUDPとTCPに使用するさまざまなアプローチを理解することです。あなたがすでに見つけたように、ConnectはUDPとTCPのために異なることを意味します。 – sipwiz
あなたが私に渡したリンクはUDP用ですが、マルチキャスティングはまったく対象としていません。 – Nippysaurus