ネットワークプログラミング初心者です。
ただ今、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ランキング
-
へんな現象
-
研究室志望の提出文書
-
応用情報技術者試験の令和元年...
-
gccを行ってもexeファイルが生...
-
質問失礼します。 プログラム言...
-
Notepad++の関数リスト表示でC...
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
トリプトファンってケト原性あ...
-
c言語
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
右ビットシフト
-
mallocについて
-
C言語 配列と関数の練習問題
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
c言語
マンスリーランキングこのカテゴリの人気マンスリー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からデータを表形式で...
おすすめ情報