• 締切済み

Winsock

チャットプログラムを作りたく思い、初めてWinsockプログラミングにとりかかることになりました。 ログイン時に存在を知らしめるため、RemoteHostプロパティ???.???.???.255(じぶんちねっと)相手にUDP15500ポートに文字列を送信します。 マシンA UDP15500で待ち状態 マシンB UDP15500で待ち状態 マシンA ???.???.???.255のUDP15500に文字列送信 マシンA 受信 マシンA 送信 マシンA 受信 マシンA 送信 マシンA 受信 ・・・何度やっても同じ。 マシンB 送信 マシンA 受信 マシンB 受信 ・・・ここでなぜか両方受信できる。 マシンA 送信 マシンB 受信 マシンA 送信 マシンB 受信 マシンB 送信 マシンA 受信 マシンB 送信 マシンA 受信 マシンB 送信 マシンA 受信 ・・・・ 最初は自分で送ったメッセージを自分が受信してるだけなのですが、そこでもう片方がメッセージを送ると両方が受信します。 その後、どちらがメッセージを送っても、もう片方に届くだけで、自分には届きません。 しかし、両方のプログラムを再起動すると、また、同じ動作が最初から確認できます。 これはいったい、何が原因でこういうことになってるんでしょう。 もう1つ質問があります。 このようなサーバーを必要としないようなチャットプログラムのようなものを作るとき、そもそもUDPを使っていいのか、ポートは何番を使っていいのかとか、教えてもらえませんか?

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

UDPは通信を行った順番どおりに送受信が行われる保証はありません。 UDPについて一部触れたスレ http://oshiete1.goo.ne.jp/kotaeru.php3?q=184968 チャットはほとんどのソフトはTCPを使用します。 使用するポートは任意です。 個人的には、6000番台・8000番台を使用するソフトが多いような気がします。 だからといってそのポートを使用してはいけないと言うことはありません。何番でもよいと思います。 INIファイルに書いておいて、可変にしておくのがベストです。 TCPでの通信のサンプルスレ http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606 UDPで組めるようになったら、大人数対応の高速チャットも可能になりますが、まずはTCPでノウハウを学んでからにしてみては?

haporun
質問者

お礼

回答ありがとうございます。 TCPだと*.*.*.255に送ってブロードキャストとかできないみたいなので、UDPを使うことにしたのですが。 IPなどを別の方法で相手に伝えないと、チャットが開始できないというのは、ちょっと目的に添わないもんで。 だからポートを変更できるようにするのも、あまりやりたくないです。 なにか良い方法はないものでしょうか。

haporun
質問者

補足

どうやら別問題のようなので、別スレを立てることにします。 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう