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时,我没有得到数据.
知道我错过了什么吗?
好吧,不幸的是所有回复都不适合我,但我终于找到了解决方案;)
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 以便进一步处理。