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 ローカルのどこにもリモートのキューもありません 0 読み取り 0 書き込み、現在の読み取りなし、現在の書き込みなし、読み取りストリーム 0x299720 開いていない、書き込みストリーム 0x299aa0 開いていない、接続されていません

「どこにも」と書かれている場合、もちろん IP アドレスが必要ですが、ありません。オンラインの例から、私のコードは問題ないように見えますが、2台のコンピューターと電話で実行すると、この「どこにもない」ことが発生するため、おそらく何か間違ったことをしています. 誰にもアイデアがありますか?

ありがとう!

編集:明確にするために:エラーレポートを使用する場合(NSErrorインスタンスを「connectToHost:onPort:error」に渡し、それをNSLoggingすることにより)、返されるのは(null).

4

1 に答える 1

0

うわー、それは恥ずかしいです。AsyncSocket を格納するために ivar を作成する必要がありました。これがないと、viewDidLoad が完了した後に範囲外になり、onSocket:didConnectToHost:port が呼び出されなかったのです。

于 2012-06-01T01:40:31.450 に答える