我是SocketRocket新手,我想做的是扫描网络192.168.1.x,当它发现服务器连接到它。这是我的密码:
NSString *seg=@"ws://192.168.1.";
NSString *puerto=@":5000";
self.socketReady = NO;
for (int i=0; i<255; i++) {
NSMutableString *ip =[[NSMutableString alloc]init];
[ip appendString:seg];
[ip appendString:[@(i) stringValue]];
[ip appendString:puerto];
self.serverSocket = [[SRWebSocket alloc] initWithURL:[[NSURL alloc] initWithString:ip]];
self.serverSocket.delegate = self;
[self.serverSocket open];
}我知道self.serverSocket打开只能进行一次,但我不知道如何扫描然后连接到服务器。
发布于 2014-03-21 00:08:36
[self.serverSocket open]是一个异步调用--也就是说,它将立即返回,如果/如果套接字成功连接,则调用委托方法webSocketDidOpen:;如果没有,则调用didFailWithError:。
您可以更改循环,以便它使用局部变量而不是属性-
NSString *seg=@"ws://192.168.1.";
int puerto=5000;
for (int i=0; i<255; i++) {
NSString *ip =[NSString stringWithFormat:@"%@%d:%d",seg,i,puerto];
SRWebSocket *newSocket = [[SRWebSocket alloc] initWithURL:[[NSURL alloc] initWithString:ip]];
newSocket.delegate = self;
[newSocket open];
}然后在委托方法中需要存储连接成功的套接字-
- (void)webSocketDidOpen:(SRWebSocket *)webSocket
{
self.serverSocket=webSocket;
//TO DO start processing data on the socket...
}但是,这是一种非常难看的定位和连接服务的方式:
您应该研究其他用于标识服务器地址的选项,例如Bonjour,甚至是设置服务器地址的简单应用程序首选项。
https://stackoverflow.com/questions/22544423
复制相似问题