【问题标题】:Asyncsocket: no local or remote addressesAsyncsocket:没有本地或远程地址
【发布时间】:2012-05-31 17:07:14
【问题描述】:

我正在尝试建立到本地服务器的 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)

【问题讨论】:

  • 您似乎缺少要发布的控制台日志(在“以下...”行之后)。可能是编辑把它们吃了。无论如何,如果你解决它,它会更容易回答你的问题。
  • 哦,我猜是编辑把它去掉了,因为它被封装在尖括号中。它现在在那里,谢谢。

标签: objective-c ios cocoaasyncsocket


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2020-11-30
    • 2020-07-27
    • 2017-12-07
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多