0

我正在尝试建立到本地服务器的 TCP 连接,并且由于几乎每个人都同意 Asyncsocket 是要走的路,所以我也去了。但是,我遇到了最基本的问题:Asyncsocket 实例没有本地或远程地址。我没有太多代码,但这就是我所拥有的:

- (void)viewDidLoad {

    [super viewDidLoad];

    AsyncSocket *socket = [[AsyncSocket alloc] initWithDelegate:self];

    [socket connectToHost:@"www.google.com" onPort:80 error:nil];
}

- (BOOL)onSocketWillConnect:(AsyncSocket *)sock {

    NSLog(@"%@", sock);
    return YES;
}

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {

    NSLog(@"%@", host);
}

以下显示在控制台中(来自 onSocketWillConnect 中的 NSLog):

AsyncSocket 0x298de0 local nowhere remote nowhere has queued 0 reads 0 writes, no current read, no current write, read stream 0x299720 not open, write stream 0x299aa0 not open, not connected

在它说“无处”的地方,它当然应该有 IP 地址,但它没有。从网上的例子看,我的代码很好,但是当我在两台电脑和我的手机上运行时,我得到了这个“无处”的东西,所以我可能做错了什么。有人有想法吗?

谢谢!

编辑:为了澄清:如果我使用错误报告(通过将 NSError 实例传递给“connectToHost:onPort:error”和 NSLogging ),我得到的只是(null).

4

1 回答 1

0

哇,好尴尬 我需要制作一个 ivar 来存储 AsyncSocket,因为没有它,它会在 viewDidLoad 完成后超出范围,这就是我的 onSocket:didConnectToHost:port 没有被调用的原因。

于 2012-06-01T01:40:31.450 回答