winsockを使った通信がうまくいきません
winsockを使った通信がうまくいきません
3Dモデルを作ったプログラムを作っています。
サーバー側はポート番号入力後、bindして
WSAAsyncSelectでウィンドウにメッセージを送り、WSAGETSELECTEVENTマクロで
受信があったこと知らせます。受信したメッセージは接続しているクライアント(送信者は除く)全員に送信します。
クライアント側は移動があった時のみサーバーに移動後の座標を送信します。
こんな感じのプログラムをつくりました。
サーバーに接続して位置情報の送信と受信はうまく行ってるみたいなんですが、クライアントが同時に移動してしまうと
クライアントプログラムで勝手に移動が行われて触れなくなってしまいます。
通信のやりとりの仕方はこれであっているのでしょうか?
サーバー側はポート番号入力後、bindして
WSAAsyncSelectでウィンドウにメッセージを送り、WSAGETSELECTEVENTマクロで
受信があったこと知らせます。受信したメッセージは接続しているクライアント(送信者は除く)全員に送信します。
クライアント側は移動があった時のみサーバーに移動後の座標を送信します。
こんな感じのプログラムをつくりました。
サーバーに接続して位置情報の送信と受信はうまく行ってるみたいなんですが、クライアントが同時に移動してしまうと
クライアントプログラムで勝手に移動が行われて触れなくなってしまいます。
通信のやりとりの仕方はこれであっているのでしょうか?
Re: winsockを使った通信がうまくいきません
意味がわかりません。わからんこ さんが書きました: サーバーに接続して位置情報の送信と受信はうまく行ってるみたいなんですが、クライアントが同時に移動してしまうと
クライアントプログラムで勝手に移動が行われて触れなくなってしまいます。
通信の方法以前に、いったい何をするためのプログラムなのか説明してください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: winsockを使った通信がうまくいきません
申し訳ないですが、マルチポストでは無いでしょうか?
「winsockを使った通信方法 - C・C++ - 教えて!goo」
http://oshiete.goo.ne.jp/qa/8248644.html
フォーラムルール違反になるので、相互リンクをお願いします。
「winsockを使った通信方法 - C・C++ - 教えて!goo」
http://oshiete.goo.ne.jp/qa/8248644.html
フォーラムルール違反になるので、相互リンクをお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: winsockを使った通信がうまくいきません
このままだと単方向リンクです
相互リンクにするために、教えてgooからも補足などでこちらをリンクしてください。
つまり、コチラとアチラの回答者が相互に行き来きできる様にしてください。
相互リンクにするために、教えてgooからも補足などでこちらをリンクしてください。
つまり、コチラとアチラの回答者が相互に行き来きできる様にしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: winsockを使った通信がうまくいきません
同じような質問が他にもある様ですが、全部に相互リンクをお願いできますか。
面倒でしょうが、回答者側が無駄な回答をしないために必要な事なのでお願いします。
「C言語何でも質問掲示板~規約~」
http://dixq.net/board/board.html
面倒でしょうが、回答者側が無駄な回答をしないために必要な事なのでお願いします。
「C言語何でも質問掲示板~規約~」
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: winsockを使った通信がうまくいきません
通信に関しては、もう結論は出ているみたいですがlistenするサーバーらしいプログラムを組む必要がありますね。
あと、クライアント・サーバ間でのデータのやり取りがよく分かりません。
あちらでも質問されてますが、こちらとあちらで詳しく説明してください。
※ これがマルチポストの面倒な所です。
あと、クライアント・サーバ間でのデータのやり取りがよく分かりません。
あちらでも質問されてますが、こちらとあちらで詳しく説明してください。
※ これがマルチポストの面倒な所です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: winsockを使った通信がうまくいきません
listen関数を使わずに
WSAAsyncSelectを使って
指定したソケットにFD_READを指定して受信があった時に、ウィンドウプロシージャでそのメッセージを受け受信する
やり方は間違ってるってことですか?
WSAAsyncSelectを使って
指定したソケットにFD_READを指定して受信があった時に、ウィンドウプロシージャでそのメッセージを受け受信する
やり方は間違ってるってことですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: winsockを使った通信がうまくいきません
すいません。回答は明日になると思いますが、「クライアントとサーバー間では、名前と座標をくっつけてやりとりしています。」の部分に問題が有るので「サーバーに接続して位置情報の送信と受信はうまく行ってるみたいなんですが、クライアントが同時に移動してしまうとクライアントプログラムで勝手に移動が行われて触れなくなってしまいます。」と言う現象に繋がっていると思います。
これは、listenを使わずに組んでいるので、何らかの手違いで受信した相手と送信する相手を間違っている可能性もあります。
どちらにしても、ここの詳しい説明なしに原因は掴めないと思いますので、ソースコードを提示すべだと思います。
出来れば、バグを再現するだけのシンプルなコードが望ましです。
これは、listenを使わずに組んでいるので、何らかの手違いで受信した相手と送信する相手を間違っている可能性もあります。
どちらにしても、ここの詳しい説明なしに原因は掴めないと思いますので、ソースコードを提示すべだと思います。
出来れば、バグを再現するだけのシンプルなコードが望ましです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: winsockを使った通信がうまくいきません
シンプルにクライアント側のプログラムを書きなおしている時に、
recv関数がブロッキングを起こしている事がわかりました。
そこで、マルチスレッドを使ってブロッキングを回避する方法でうまくいきました。
recv関数がブロッキングを起こしている事がわかりました。
そこで、マルチスレッドを使ってブロッキングを回避する方法でうまくいきました。
Re: winsockを使った通信がうまくいきません
まだ見ていることを祈りつつ。
UDPの時は、recv()じゃなくて、recvfrom()を使いましょう。
UDPの時は、recv()じゃなくて、recvfrom()を使いましょう。
Re: winsockを使った通信がうまくいきません
ありがとうございます。
参考にさせてもらったサイトがrecv関数を使っていたのでrecvと書いてしましましたが
recvfrom関数を使っています。
参考にさせてもらったサイトがrecv関数を使っていたのでrecvと書いてしましましたが
recvfrom関数を使っています。