0

我正在使用 CocoaAsyncTask 并尝试连接到本地主机。当我从模拟器运行它时,它可以工作(我正在使用提供的回显服务器检查它)但是当我在实际设备上运行它时,什么也没有发生......代码是:

if(![socket connectToHost:@"localhost" onPort:8080 error:nil]) {
    NSLog(@"Error..");
}
-(void)socket:(GCDAsyncSocket *)socket didConnectToHost:(NSString *)host: port:(uint16_t)port {
    NSLog(@"Connected");
}

有任何想法吗?谢谢!

4

1 回答 1

2

当您尝试连接到未在本地安装的服务器(本地 = 在完全相同的主机和接口上)时,您提供的地址为“localhost”。请参阅“localhost”上的维基百科条目

它在模拟器上工作,因为它使用 Mac 的网络接口,因此“localhost”指的是您运行服务器的机器以及客户端。

您需要提供主机(例如您的 Mac)的本地 IP 地址。通常这类似于 192.168.1.100 或 192.168.0.100 - 但更准确地说是;

192.168.xxx.xxx = C 类不可路由地址

10.xxx.xxx.xxx = A 类不可路由地址

xxx代表 0 到 255 之间的任何值。

要了解您的本地 IP 地址,请使用System Preferences -> Network Panel。检查“...IP地址xxx.xxx.xxx.xxx”的状态下方的值

在此处输入图像描述

于 2012-04-27T00:21:02.767 回答