2011-10-27 3 views
0

誰でもTCP接続を開いて同時にデータを送信する方法を教えていただけますか? 私は次のように接続を開きます: socket-> conectohost(host、port) 接続6の整数を開くために一緒に送っています。 ありがとうございましたQtで整数を送信

答えて

1

私が知る限り、QTcpSocket経由でデータを送信する前に接続が確立するのを待つ必要があります。このような組み合わせはあなたのユースケースでうまくいくのでしょうか?

socket->connectToHost(...); 
if(socket->waitForConnected()) { 
    socket->write("my_data"); 
} 
+0

あなたは書き込みを行い、その後、接続または私は接続する前にやるべきことができませんか? 私はあなたの前に待つべきですか? – user950489

+0

@ user950489:あなたのサーバーがバイトを受け取るかどうか試してみることができます。しかし、そうしても、強くお勧めします:あなたはまだビープ音が聞こえている間に電話で話し始めるのではなく、ピアがピックアップするのを待つ。それは汚い。 - 接続されていないポートにデータを送信すると、接続が確立されるまでデータがキューに入れられているかどうか、またはデータが廃棄されたかどうか、サーバーのOSによって異なります(わかりません)接続がまだアップしていないためです。たぶんあなたはすぐに送信する必要がある理由を教えてください。おそらくそれを実行する良い方法があります。 – Robin

1
int array[] = {1,2,3,4,5,6}; 
int array_elements = sizeof(array)/sizeof(int); 

socket->connectToHost("example.com", 12345); 
if(socket->waitForConnected(1000)) { 
    qDebug("Connected."); 
    for(int n = 0; n < array_elements; n++) 
     socket->write((char*)(array + n * sizeof(int)), sizeof(int)); 
    qDebug("6 integers sent. Eat that."); 
    socket->disconnectFromHost(); 
} else { 
    qDebug("Timeout."); 
} 
+0

ありがとう、私はこのようなソケットで整数を書くことはできません: ソケット - >書き込み(配列[私]、sizeof(int)); エラーが発生しました: C:\ ejemplos_qt \ teratermobile-build-simulator \ .. \ teratermobile \ cliente.cpp:99:エラー: 'QTcpSocket :: write(QString&、unsigned int)'の呼び出しで一致する関数がありません。 – user950489

+0

ソケットに整数を書くことはできません。ソケット - >書き込み(整数) – user950489

+0

正しいです。更新された回答を確認してください。 –

関連する問題