ネットワークプログラミング初心者です。
ただ今、C言語(初心者)にてCUIベースの非同期接続のチャットクライアントプログラムを作成していて困ったことがあります。
fgets関数で、クライアントAの発言を待ち、sendパケットでサーバーに、対してメッセージを送信する形を取っているのですが、こちらが、sendで入力待ちの時に、もう一台のクライアントBから、メッセージが来た時にクライアントAはfgets関数で、待っている状態なので、recv関数処理が出来ていません。ネットで、調べたんですけどWSAAsyncSelect関数を使ってノンブロッキングモードにすれば良い!って書いてあったのですが、関数の構造体引数を見ると、GUIプログラムで使うように見えます。もしこの関数が
使えるなら、どなたかご教授願います。もし使用できないならば、どうしたらいいか教えていただけないでしょうか?
<やりたい事>
クライアントAがメッセージ入力待ちの時に、クライアントBがメッセージを送ってきた場合に一時的にクライアントAのメモリ領域に保持して、
クライアントAがメッセージを送信した時にその保持していた、メモリ領域をprintfなどで、出力したいです。
初心者ですが、よろしくお願いいたします。
No.2
- 回答日時:
CUIベースでネットワークなら基本的にselectを使います。
非同期IOやスレッドより扱いやすいと思います。
selectは複数待ちの機能です。複数のfdに対して同時に待つことができますから、コンソールとサーバーの両方に対して待ちデータがきた方を読み取って処理すれば良いです。
No.1ベストアンサー
- 回答日時:
ノンブロックIOを使いたいだけならioctlsocket()かWinSock2ならWSAIoctl()で良いのでは。
ノンブロックIOにしてポーリングするとCPU使用率が跳ね上がります。
素直にスレッドを起こすのが一番簡単だと思いますが。
返答ありがとうございます。ioctlsocketという関数は知りませんでした。
ありがとうございます。調べてみます。スレッド関数も使おうと思ったのですが、初心者ながら少しとっつきにくい関数なので、敬遠していました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ 某クラウドソーシングサービスの請負契約のキャンセル後に請求された遅延損害金 1 2022/04/08 00:29
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- ネットワーク 社内ネットワークの1台だけ接続できないときがある 4 2023/01/25 11:58
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- CPU・メモリ・マザーボード ストリーミングの一時処理用の領域について 1 2023/04/11 21:55
- サーバー (童顔♀です)webサイト納品後,記事更新をこちらでする場合どうやりますか....? 3 2023/08/09 04:44
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Gmail GmailでのPOPメールの保存先はどこなのか 3 2022/06/09 02:06
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- メルカリ メルカリ取引について 1 2022/07/30 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
非同期関数とノンブロッキング...
-
AJAX通信のエラー処理について
-
Javadcriptでwebサーバー側にあ...
-
非同期通信を使うタイミングが...
-
【JavaScript】confirmのボタン...
-
saved from url=(0013)abou
-
HTMLでDBからデータを表形式で...
-
cakephp2とsmartyの表示が遅い
-
DirectXとOpenGLはどちらが動作...
-
データ受け渡しについて
-
テキストファイルの内容を変数...
-
innerHTMLで表示完了後に、Ajax...
-
読み込み中に「Now Loading」を...
-
ブラウザ閉じたらサーバー処理...
-
subversionでコミットしたらftp...
-
【Ajax】改行を含めたデータを...
-
チャットを作る
-
Operaでの表示がおかしい(CSS...
-
動的なウェブページをつくるた...
-
テーブルで作った表をボタン操...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
非同期通信を使うタイミングが...
-
Javadcriptでwebサーバー側にあ...
-
OVERLAPPED構造体が分かりませ...
-
8ビットダウンカウンタをVerilo...
-
wininet.dllのInternetOpenの同...
-
コールバック関数
-
非道式6進カウンタと非同期式10...
-
phpとajaxの比較
-
非同期関数とノンブロッキング...
-
AJAX通信が終わるまで次の処理...
-
非同期接続について質問です
-
ExcelVBAで非同期のsocket通信...
-
JK-FFを使う非同期10進・2進カ...
-
AJAX通信のエラー処理について
-
iTunesで同期させる曲目を指定...
-
リロードなしのチャットやWebア...
-
AJAXとSEO。同期通信とPHP送信...
-
【JavaScript】confirmのボタン...
-
DirectXとOpenGLはどちらが動作...
-
HTMLでDBからデータを表形式で...
おすすめ情報