掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TCP/IPでの全二重通信を実現するには? (ID:67626)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>>YuO 様 早速の回答ありがとうございます。 >シングルスレッドで可能。ただし,非同期通信を行う必要があります。 今現在非同期での送受信を行っていますが、 何故か 送信メッセージ だけは接続後にしか発行されず、仕方がないのでタイマイベントを用いて送信を行っています。 具体的には、 WSAAsyncSelect(sock, hWnd, WM_SOCKET, FD_WRITE | FD_READ | FD_CLOSE ) 上記で 送信・受信・切断を非同期で動作するようにし、 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wP, LPARAM lP) 内、 case WM_SOCKET: if(WSAGETSELECTERROR(lP)!=0) return 0L; switch(WSAGETSELECTEVENT(lP)){ 上記で非同期処理メッセージを受け取り、 case FD_READ: でデータの受信を行っています。 case FD_WRITE: //メッセージ受信 も一応用意してありますが、 connect での接続後に一度だけ発行されるだけです。 もしかしたら、送信イベントをタイマで行っているのが問題なのでしょうか。 (ちなみに今は1秒毎に行っています) 本来はメッセージ受信時に送信を行うべきなのかもしれませんが、 メッセージが来ないと永遠にデータを送信することが出来ず・・・。 >1ファイル単位の送信であるのは,送信側プログラムの都合です。 >sendで送るデータに,ファイルという単位は存在しません。 了解しました。 データを分割してsendを行う方法を検討してみたいと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.