
ネットワークプログラミング初心者です。
ただ今、C言語(初心者)にてCUIベースの非同期接続のチャットクライアントプログラムを作成していて困ったことがあります。
fgets関数で、クライアントAの発言を待ち、sendパケットでサーバーに、対してメッセージを送信する形を取っているのですが、こちらが、sendで入力待ちの時に、もう一台のクライアントBから、メッセージが来た時にクライアントAはfgets関数で、待っている状態なので、recv関数処理が出来ていません。ネットで、調べたんですけどWSAAsyncSelect関数を使ってノンブロッキングモードにすれば良い!って書いてあったのですが、関数の構造体引数を見ると、GUIプログラムで使うように見えます。もしこの関数が
使えるなら、どなたかご教授願います。もし使用できないならば、どうしたらいいか教えていただけないでしょうか?
<やりたい事>
クライアントAがメッセージ入力待ちの時に、クライアントBがメッセージを送ってきた場合に一時的にクライアントAのメモリ領域に保持して、
クライアントAがメッセージを送信した時にその保持していた、メモリ領域をprintfなどで、出力したいです。
初心者ですが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ノンブロックIOを使いたいだけならioctlsocket()かWinSock2ならWSAIoctl()で良いのでは。
ノンブロックIOにしてポーリングするとCPU使用率が跳ね上がります。
素直にスレッドを起こすのが一番簡単だと思いますが。
返答ありがとうございます。ioctlsocketという関数は知りませんでした。
ありがとうございます。調べてみます。スレッド関数も使おうと思ったのですが、初心者ながら少しとっつきにくい関数なので、敬遠していました。
ありがとうございました。
No.2
- 回答日時:
CUIベースでネットワークなら基本的にselectを使います。
非同期IOやスレッドより扱いやすいと思います。
selectは複数待ちの機能です。複数のfdに対して同時に待つことができますから、コンソールとサーバーの両方に対して待ちデータがきた方を読み取って処理すれば良いです。
お探しの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ランキング
-
RS-232Cの通信方式に関して。
-
AJAX通信が終わるまで次の処理...
-
AJAX通信で、ボタンをクリック...
-
非同期通信を使うタイミングが...
-
Javadcriptでwebサーバー側にあ...
-
ajaxの使いどころ
-
AJAX通信のエラー処理について
-
jsonテキストデータの並び替え...
-
【JavaScript】confirmのボタン...
-
ジャンクの箇所を一切書かずに...
-
php ob_flushが全く動作しない
-
Python3, Flask, Jinja2などで...
-
JSONのコメント行の書き方...
-
sleepの負荷
-
ソースコードのFTP転送について
-
インターネット上のファイルサ...
-
ajax後、php,mysqlも一部再読み...
-
java,javaスクリプトなどの違い...
-
テキストファイルの内容を変数...
-
ローカルでのhtmlチェックにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
8ビットダウンカウンタをVerilo...
-
AJAX通信が終わるまで次の処理...
-
非同期関数とノンブロッキング...
-
AJAX通信で、ボタンをクリック...
-
wininet.dllのInternetOpenの同...
-
Javadcriptでwebサーバー側にあ...
-
各種APIを使ってwebサービスを...
-
OVERLAPPED構造体が分かりませ...
-
JK-FFを使う非同期10進・2進カ...
-
SRAM製品の同期・非同期の違い
-
AJAX通信のエラー処理について
-
phpとajaxの比較
-
C#でUDP通信
-
Ajax非同期通信の多重リクエス...
-
CPU I/Oポート 通信 モニタ
-
サイトのデータ(HTML)を取得
-
非同期接続について質問です
-
ExcelVBAで非同期のsocket通信...
-
AJAXとSEO。同期通信とPHP送信...
-
RS-232Cの通信方式に関して。
おすすめ情報