连接到广播而不是服务器后,AsyncUdpSocket接收数据的问题很小

eem*_*bee 8 sockets iphone broadcast

我有AsyncUdpSocket的问题.

我曾经连接到服务器,发送一些数据并获得一些响应.现在因为我不知道服务器的实际地址,我不得不更改我的代码并将数据发送到广播地址255.255.255.255.

这是我的代码:

NSString *bchost = @"255.255.255.255";
NSString *host = @"10.1.0.1";
int udpPort = 6001;

AsyncUdpSocket *udpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];
[udpSocket bindToPort:udpPort error:nil];
[udpSocket enableBroadcast:YES error:nil]; 
NSError *error = nil;
if ([udpSocket connectToHost:bchost onPort:udpPort error:&error])
{
[udpSocket receiveWithTimeout:10 tag:0];
[self sendToUDPServer:@"HELLO"];
}
Run Code Online (Sandbox Code Playgroud)

所以,问题在于它适用于"主机"而不适用于"bchost".在这两种情况下,我在服务器端看到接收到数据并且答案被发送到发送方的地址(应该是iOS设备),但是在设备上,当我将数据发送到bchost时,我没有得到数据.

知道我错过了什么吗?

eem*_*bee 4

好吧,不幸的是所有回复都不适合我,但我终于找到了解决方案;)

NSString *bcHost = @"255.255.255.255";
NSString *anyHost = @"0.0.0.0";

int UDP_SOCKET_PORT =         6001;
int DISCOVERY_PORT  =       6003;

udpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];
[udpSocket bindToAddress:anyHost port:DISCOVERY_PORT error:nil];  
[udpSocket enableBroadcast:YES error:nil]; 
[udpSocket receiveWithTimeout:10 tag:0];
[udpSocket sendData:[@"Hello" dataUsingEncoding:NSASCIIStringEncoding] toHost:bcHost port:UDP_SOCKET_PORT withTimeout:-1 tag:0];
Run Code Online (Sandbox Code Playgroud)

如果它后面有服务器,它将触发响应,这也将允许从服务器获取 IP 以便进一步处理。