マルチキャスト ソケットを購読して、そのソケットに投稿する他のデバイスをリッスンするアプリで作業しています。聞くと、すべてが正常に機能しています。問題は、ローカル ネットワークでそのソケットに投稿しようとしたときです。「ネットワークに到達できません」と表示され、データを送信できません。私のコードはこのようなものです。
ポート 5775
ソケットアドレス @"225.4.5.6"
リスナー
self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if (![self.socket bindToPort:PORT error:&error])
{
NSLog(@"Error binding to port: %@", error);
return;
}
if(![self.socket joinMulticastGroup:SOCKETADDRESS error:&error]){
// NSLog(@"Error connecting to multicast group: %@", error);
// return;
}
if (![self.socket beginReceiving:&error])
{
NSLog(@"Error receiving: %@", error);
return;
}
クライアント(送信者)
self.udpSender = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if (![self.udpSender bindToPort:BRD_PORT error:&error])
{
NSLog(@"Error binding to port: %@", error);
return;
}
if(![self.udpSender enableBroadcast:YES error:&error]){
// NSLog(@"broadcast s%@", error);
//return;
}
と、こんな感じで書いてみました。
[self.udpSender sendData:input toHost:SOCKETADDRESS port:PORT withTimeout:-1 tag:0];
このコードは、インターネットにアクセスできるときに機能します。しかし、ローカル ネットワークに接続すると、送信者に「ネットワークに到達できません」と表示されます。何が間違っているのかわかりません。あなたが私を助けてくれることを願っています。ありがとう。