すみません。よくわからなくなったので教えてください。
非同期処理を行いwindowprocで送信、受信の処理をしているのですが、一部わかりません。
[内容]
クライアントからデータを送信してもらい、サーバ側で受信をして、サーバ側で受信後、クライアントへ送信をしたいのですが....
[サーバ側ソース抜粋]
::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
int EventErrorCoode;
int len;
switch(message)
{
case FM_TCPPROC:
EventErrorCoode = WSAGETSELECTERROR(lParam);
switch(WSAGETSELECTEVENT(lParam)){
case FD_CONNECT:
//コネクトされたときの処理
break;
case FD_ACCEPT:
if(EventErrorCoode != 0){
NetWork_LogOut();
break;
}
// 状態判定処理
if(NetWork_Accept() == FALSE){
//失敗したときの処理
}
break;
case FD_READ:
// データの受信メッセージ
if(NetWork_Recv() == FALSE){
}
break;
case FD_WRITE:
//テスト折り返し送信
SendData = "折り返し";
strcpy(Recv_Buffer,SendData);
len = send(server_s, Recv_Buffer, strlen(Recv_Buffer),0);
break;
:
:
return CDialog::WindowProc(message, wParam, lParam);
}
::NetWork_Recv()
{
int nResult;
int len;
nResult = recv(client_s, (CHAR *)Recv_Buffer, RECV_SIZE - 1, 0);
Recv_Buffer[nResult] = '\0';
return TRUE;
}
*非同期処理はsocket作成後しています。
クライアントから送信されたデータが、FD_READで認識し、NetWork_Recv()関数を使って受信します。
その後、空になった時点で、FD_WRITEを実行すると思っていたのですが、recvされた後、データは空にならないのでしょうか?
No.1ベストアンサー
- 回答日時:
あーあ、WindowProcオーバーライドしちゃってるんだってのはおいといて(^^;;
>クライアントから送信されたデータが、FD_READで認識し、NetWork_Recv()関数を使って受信します。
>その後、空になった時点で、FD_WRITEを実行すると思っていたのですが、recvされた後、データは空にならないのでしょうか?
FD_WRITEは、「ソケットの送信バッファに空きができたことを通知」なんだから、受信の終了とは関係ないような。
クライアントへデータを投げつけ終わった(残りを投げることができる)タイミングを知るためのものだと思うんですが。
FD_CONNECTの直後、FD_READの前にFD_WRITE来てませんか?
いつもありがとうございます。
>あーあ、WindowProcオーバーライドしちゃってるんだってのはおいといて(^^;;
MFCの使い方よく知らなくて、すみません。(^^;
いろいろ事情があり、急遽VC++での開発になったので....
教えて頂いているのに、本当に申し訳ありません。
いろいろ調べてみたら、sendの使いかたが間違っていました。すみませんでした。
気が焦っていたみたいで、見落としがありました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
ClearCommError呼び出し時のCE_...
-
VB2010 シリアル受信した情報を...
-
winsock recvでデータの取得方法
-
RS232C通信(PC⇔PLC)
-
winsockの動作について。
-
VB2005でWin32APIを用いてRS-23...
-
再現性の無いバグ
-
「スイッチングハブのバッファ...
-
socket: recvはいつ,どれだけ...
-
rs232cでの受信データ(mscomm)...
-
Linuxでのシリアル通信について...
-
UDP処理のエラーについて
-
シリアル通信エラー
-
WriteFile()でのデータ送信がで...
-
Macターミナルで実行中のプログ...
-
逆コンパイルと逆アセンブルの...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
C言語で、メモリを解放しないで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
winsockでソケット通信の開発を...
-
socket: recvはいつ,どれだけ...
-
SocketのSend関数でのCLOSEの検...
-
シリアル通信の出力バッファと...
-
WriteFile()でのデータ送信がで...
-
RS232C通信(PC⇔PLC)
-
シリアルポート通信
-
ソケット通信内 read関数について
-
Linuxでのシリアル通信について...
-
SerialPortのDataReceivedイベ...
-
「スイッチングハブのバッファ...
-
RS-232Cでバイナリデータを受信...
-
Connection reset by peer
-
UDP処理のエラーについて
-
VB2005でWin32APIを用いてRS-23...
-
シリアル通信エラー
-
winsockの動作について。
-
シリアル通信 大きいサイズの...
-
VB2010 シリアル受信した情報を...
おすすめ情報