2011-01-30 4 views
3

iphoneとPCの間にtcp接続を確立します。 PC上でQTspServerが動作していて動作しています(他のクライアントアプリケーションでテスト済み)。iphone tcp connection

- (IBAction)connectToServer:(id)sender { 
    CFReadStreamRef read = NULL; 
    CFWriteStreamRef write = NULL; 

    NSString *host = @"192.168.1.169"; 

    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)host, 1000, &read, &write); 
    CFWriteStreamOpen(write); 
    int k = 0; 
} 

サーバーPC上で反応していない。ここで

は私がiPhone上で使用している接続方法があります。任意の助けが適切です

ところで:サーバは何もQTcpServerはincomingConnectionメソッドを再実装して何もないです。ここでは、サーバー側のmain機能は次のとおりです。writeCFStreamCreatePairWithSocketToHostへの呼び出しの後にNULLではありません

int main(int argc, char **argv) 
{ 
QApplication app(argc, argv); 
AbstractServer server; 
server.listen(QHostAddress::Any, 1000); 
QLabel label("Hello server"); 
label.setFixedSize(400, 400); 
label.show(); 
return app.exec(); 
} 
+0

サーバのファイアウォールが干渉していないことを確認しましたか? – outis

+0

また、これをシミュレータまたはiPhoneでテストしていますか? – outis

+0

はい。サーバーはWindowsのファイアウォール設定で有効になっています。 iPhoneとシミュレータの両方でテストしようとしています –

答えて

1

何かがサーバに送信された後に接続が確立されました

0

チェックしていること。そうであれば、socket connection is failing

-(IBAction)connectToServer:(id)sender { 
    CFWriteStreamRef write = NULL; 

    NSString *host = @"192.168.1.169"; 
    int port = 1000; 
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)host, port, NULL, &write); 
    if (!write) { 
     // connection failed. 
     NSLog(@"Connection to %@:%d failed.",host,port); 
    } else { 
     CFWriteStreamOpen(write); 
     // keep a reference to the output stream for later use. 
     self.output = (NSOutputStream*)write; 
     // the function that made the output stream has "Create" in its name, so 
     // this method owns the write stream & should release it. 
     CFRelease(write); 
    } 
} 

出力ストリームは、selfのプロパティに格納されています。サンプルコードでは、ストリームはどこにも保存されません。あなたはそれを解放しないので、メソッドが終了してもまだ存在しますが、アクセスする方法はありません。サンプル-connectToServer:が代表である場合、そのエラーはオブジェクトがサーバーに何も送信しないようにします。

+0

あなたの答えを教えてもらえますか?また、現在のサーバーでは接続時に応答していません。 –

+0

NULLではありません。両方とも。これは、接続がcussessfullであることを示す指標ではありません:http://developer.apple.com/library/ios/#documentation/CoreFoundation/Reference/CFStreamConstants/Reference/reference.html。ここに書かれています:ストリームは、ストリームの1つが開かれるまで、指定されたホストへの接続を開きません。 –

+0

ソケットは、失敗するためにホストに接続する必要はありません。 – outis