
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Winsockで接続待ちタイムアウト...
-
ソケットのrecvの戻り値が0
-
ftpクライアントでの接続後の、...
-
recv関数でフリーズしてしまう
-
UDP通信におけるbind関数について
-
Socket通信での通信異常について
-
Socket通信の0バイト受信について
-
VB6のwinsockでconnectできない
-
closeされたsocketへの動作につ...
-
ネットワークプログラミングに...
-
C言語でチャットプログラミング...
-
Javascritpでソケット通信?
-
C言語でHTTP1.1のキープアライ...
-
ソケットプログラミングに関す...
-
TCP/IP通信時のサーバーからの受信
-
Socketの使用方法について
-
fsockopenのソケットが全然分か...
-
ソケット通信の送受信遅延-02 ...
-
C#とTCP/IPを利用したサーバー...
-
空きポートの取得方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信する時に、相手にどうや...
-
UDP通信におけるbind関数について
-
エクセル VBA でのCOMポート...
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
VB6のwinsockでconnectできない
-
Socket通信の0バイト受信について
-
recv関数でフリーズしてしまう
-
Winsockで接続待ちタイムアウト...
-
Connectエラーが出てしまう・・...
-
送信したデータの一部が文字化...
-
【ajax】 XMLHttpRequestオブジ...
-
ソケット通信
-
closeされたsocketへの動作につ...
-
wsdlからのサービス化を行い。
-
Cにおける通信プログラミングの...
-
UdpClient 送信元のIPアドレ...
-
非ブロッキングソケットのrecv...
-
ソケットを用いた1対多通信につ...
おすすめ情報