0

vc++ 2008 で TCP ソケット アプリケーションを作成しました。「送信」操作に x 秒以上かかる場合はタイムアウトさせたいです。そのために私は使ってみました

char *optValue = "5000";
setsockopt(socket, SOL_SOCKET, SO_SNDTIMEO, optValue, sizeof(optValue));

成功を返しますが、「送信」は期待どおりに動作しませんでした。次に、で試しました

tv.tv_sec = 10; tv.tv_usec = 0; FD_SET(accept_socket, &write_mask); select(socket, (fd_set *)0, &write_mask, (fd_set *)0, &tv);

それでも「送信」は、設定されたタイムアウト値に従って動作していません。正しい方法であるかどうかを確認してください。

4

1 に答える 1

1

setsockoptを受け入れながら、char *実際には値を文字列として望んでいません。型キャストされた整数へのポインタとして値を渡す必要がありますchar *

int optValue = 5000;
setsockopt(socket, SOL_SOCKET, SO_SNDTIMEO, (const char *) &optValue, sizeof(optValue));

PS。の使用は、sizeofあなたが思っていることを行いません。ポインターが指すものではなく、ポインターのサイズを返します。

于 2012-08-29T06:46:01.570 に答える