winsockについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Ciel
記事: 252
登録日時: 9年前

winsockについて

#1

投稿記事 by Ciel » 9年前

お世話になります。

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

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

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

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

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

よろしくお願い致します。
oui C'est la Vie♪

アバター
みけCAT
記事: 6247
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: winsockについて

#2

投稿記事 by みけCAT » 9年前

Ciel さんが書きました:クライアント側から接続されるまでは、この関数のところで処理がずっと止まっているという認識でよいでしょうか?
確かそうだったと思います。
そうしないためには「非同期accept」というものを使います。詳しくはググってください。
Ciel さんが書きました:受信できなかった部分から受信が再開されるという認識でよいでしょうか?
確かそうだと思います。
Ciel さんが書きました:受信しきったら0が返ってきて、
それを受信完了と判断すればよいでしょうか?
それでいいかもしれません。自信はありません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Ciel
記事: 252
登録日時: 9年前

Re: winsockについて

#3

投稿記事 by Ciel » 9年前

みけCATさん、ありがとうございました。
なんとか出来そうになったので、解決とします。
oui C'est la Vie♪

閉鎖

“C言語何でも質問掲示板” へ戻る