
No.5ベストアンサー
- 回答日時:
>OnAccept()はすぐ帰ってくるのですが、、、
んー。サーバー側の動きですが
Listen() -> OnAccept() -> Accept() となりますが
Accept()する時 new した新しい CAsyncSocket に割り当ててますよね? Listenするソケットと実際に通信するソケットは異なるのが普通です。
情報が少ないので、ちょっとよく分かりません。
この回答への補足
ありがとうございます。
>Listenするソケットと実際に通信するソケットは異なるのが普通です。
ここに気付いていませんでした・・。
うまく状況を説明できて居らず、スイマセン。
STREAM型(TCP/IP接続で)のネットワークアプリケーションを作りたいのです。
もう一度、教えていただいた方法で試してみます。
いろいろご教授ありがとうございました。
接続できるようになりました・・・。
しかし、相手が受信したことを確認できるアプリケーションにはまだ遠いようです。
STREAM型を使えばできると思っていたのですが・・・。
何かほかにご存知でしたら知らせてください。
本当にどうもありがとうございました。
No.4
- 回答日時:
>同じマシン上でも理論上は可能ですよね??
理論上というか、全然問題ないです。
>しかし、なかなかOnConnect()に帰ってこないのですよね。。
ん?同じマシンですよね?
一瞬のうちにつながりませんか?
なかなか返ってこないというのは、返ってくるけど遅いということですか?
この回答への補足
解答ありがとございます。
助かっています。
すぐ返ってこないというのは、何か致命的なエラーがあるのでしょうか・・・・。
OnAccept()はすぐ帰ってくるのですが、、、
流れとしては、現在クライアントがConnectしたら、サーバがOnAccept→Accept
、そこで動きは止まってしまいます。
もしかしたら非同期式になっていないのでしょうか・・・・。
なんだか不安なのですが。
スイマセン、ご面倒お掛けしています・・。
No.3
- 回答日時:
非ブロッキングモードなら、デフォルトで
WSAEWOULDBLOCK
が返ってきますので、エラーと判断することはないですよ。
正常動作です。
つまり、getLastErrorを実行しても、
WSAEWOULDBLOCK以外が返ってきた場合を
エラーとしてあげて、
WSAEWOULDBLOCKが戻った場合は、以降の処理をして構いません。
No.2
- 回答日時:
MFCだったらおそらく CAsyncSocket で接続されているのだと思いますが、非ブロッキングソケットの場合は Connect を呼び出してもその時点では接続しない(接続するまで関数がブロックしない)のでこのWSAEWOULDBLOCKが返ってきます。
この場合WSAEWOULDBLOCKが返るのは正常な動作です。このエラーコードだけは無視すればいいです。そのうち接続結果が OnConnect() に返ってきますのでそこで接続結果を判断しましょう。
昔悩んだ記憶があります。(^^;
この回答への補足
ありがとうございます。
しかし、なかなかOnConnect()に帰ってこないのですよね。。
同じマシン上でも理論上は可能ですよね??
No.1
- 回答日時:
非ブロッキングモードとブロッキングモードのどちらでソケット処理を
しているのでしょうか?
非ブロッキングモードでソケットを生成している場合、
必ずこの値が戻るようです。
非ブロッキングモードの場合は、接続完了イベントがコールバックされた以降に
送受信処理をすればできると思います。
ブロッキングモードは特定の理由がない限り、処理がとまってしまうので
使用しないほうがいいかと思います。→これはうそかも。
ちなみに私が以前作成したときは、非ブロッキングモードで送受信処理を
おこないました。
参考URL:http://www.microsoft.com/japan/developer/library …
この回答への補足
すばやい解答ありがとうございます。
非ブロッキングモードでソケット処理を行っています。
すいません、接続完了イベントはOnConnectを使うのでしょうか???
知識が危ういもので。。。
接続が完了していなくてもサーバのAccept、クライアントのSendはエラーが起きていないのです。
ただ、サーバのReceiveで接続されていないというエラーが出てくるのです。
なにかご存知でしたら教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
【CAsyncSocket::OnReceive()呼び出しが遅れる?
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
マルチスレッドでCSocket::Createを呼ぶと落ちる
C言語・C++・C#
-
5
ソケットのクローズについて
C言語・C++・C#
-
6
winsockの非同期処理について
C言語・C++・C#
-
7
文字列の置換をCStringで(C++)
C言語・C++・C#
-
8
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
9
CStringをwchar_tに変換したい
C言語・C++・C#
-
10
Cstring(日本語含む)をcharに変換したいのですが
C言語・C++・C#
-
11
CAsyncSocket::Create()がエラ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Winsockで接続待ちタイムアウト...
-
エクセル VBA でのCOMポート...
-
JavaでBASIC認証突破
-
WinSockでのソケット通信
-
ソケットを用いた1対多通信につ...
-
ソケットでクライアントのipア...
-
逆コンパイルと逆アセンブルの...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
アプリケーションが終了するま...
-
COBOLのS9タイプからXタイプへ...
-
.NetのBackgroundWorkerクラス...
-
メモリが不足しています(VBA)
-
スレッドにて同一メモリの書き...
-
プロセスIDからウィンドウハ...
-
openGLで物体を半透明にして表...
-
フレームワーク「4.8.1」で、[S...
-
OSPFでプロセスを分ける意義に...
-
if ( a & b == b )
-
CWnd::OnTimerのスレッドの取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
Socket通信の0バイト受信について
-
Winsockで接続待ちタイムアウト...
-
ソケットのクローズについて
-
UDP通信におけるbind関数について
-
VB6のwinsockでconnectできない
-
エクセル VBA でのCOMポート...
-
SIPがNATを越えられない理由
-
ソケットでクライアントのipア...
-
UdpClient 送信元のIPアドレ...
-
ソケット通信 同じポート番号...
-
VC++でのソケット通信について
-
TCP/IPプログラミングでのselec...
-
ソケット通信
-
ソケットのrecvの戻り値が0
-
UDP通信する時に、相手にどうや...
-
vxWorks6.4を使用してソケット...
-
SendRequestでヘッダが受信され...
-
ソケットを用いた1対多通信につ...
-
どうか、POSTでのファイル転送...
おすすめ情報