ページ 11

winsockについて

Posted: 2010年12月20日(月) 19:37
by Ciel
お世話になります。

今winsockを使って簡単なサーバを作ろうとしています。
色々と関数について質問があります。

①accept
この関数は「待機中のソケットで接続されるのを待つ」という関数らしいのですが、
クライアント側から接続されるまでは、この関数のところで処理がずっと止まっているという認識でよいでしょうか?

②recv
この関数でデータを受信しますが、もし一度の受信処理で受信しきれなかった場合は具体的に言うとどう対応するのでしょうか?
調べたところによると、もう一度recvするらしいのですが、もう一度recvした時には受信できた部分を除いて、
受信できなかった部分から受信が再開されるという認識でよいでしょうか?

また、この関数の戻り値は受信したバイト数が返ってくるとのことなので、受信しきったら0が返ってきて、
それを受信完了と判断すればよいでしょうか?

まず、これだけの質問に答えていただけますでしょうか?
ほかにも沢山あるのですが、この回答によってまた質問も変わってきて、色々と派生していくと思いますので。

よろしくお願い致します。

Re: winsockについて

Posted: 2010年12月20日(月) 21:09
by みけCAT
Ciel さんが書きました:クライアント側から接続されるまでは、この関数のところで処理がずっと止まっているという認識でよいでしょうか?
確かそうだったと思います。
そうしないためには「非同期accept」というものを使います。詳しくはググってください。
Ciel さんが書きました:受信できなかった部分から受信が再開されるという認識でよいでしょうか?
確かそうだと思います。
Ciel さんが書きました:受信しきったら0が返ってきて、
それを受信完了と判断すればよいでしょうか?
それでいいかもしれません。自信はありません。

Re: winsockについて

Posted: 2010年12月20日(月) 22:50
by Ciel
みけCATさん、ありがとうございました。
なんとか出来そうになったので、解決とします。