我还没有找到任何关于如何检查端口是否打开的信息。我尝试使用 AsyncSocket 类来实现它,但它始终返回 TRUE,尽管我拒绝与服务器上该端口的所有连接。
此外,我尝试使用isConnected
AsyncSocket 的方法,但总是返回 FALSE。
到目前为止我的代码:
//Init socket
socket=[[AsyncSocket alloc] initWithDelegate:self];
//results on TRUE always!
NSLog(@"Ready");
NSError *err = nil;
if(![socket connectToHost:@"10.1.2.40" onPort:25 error:&err])
{
NSLog(@"Error: %@", err);
}
else
{
NSLog(@"Connected");
}
//addition - results in FALSE always!
if([socket isConnected])
{
NSLog(@"yes, its connected");
}
else
{
NSLog(@"not connected...");
}
[socket disconnect];
您需要使自己成为委托并处理 onSocket:willDisconnectWithError: 方法。连接完全是异步的,因此除非存在基本的系统问题(套接字被禁用、您传入了无效地址等),否则当套接字连接尝试在后台发生时,该调用将始终成功。
如果该尝试失败,将调用 onSocket:willDisconnectWithError: 委托方法,以便您知道连接尝试失败。
我不确定为什么,但 AsyncSocket 类认为 kCFStreamStatusError 流状态为“已连接”,所以我怀疑这就是它显示为已连接的原因。您可以在 AsyncSocket 的源代码中了解所有这些内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)