DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Socket通信でエラーが発生する

環境/言語:[Microsoft Visual Studio .NET 2003]
分類:[.NET]


はじめまして。初めて質問させて頂きます。

こちらの「プログラミング道」-「.NET Tips」-「インターネット」に記載されている
「TCPクライアント・サーバープログラムを作成する」を参考に通信プログラムを作成
させて頂きました。

プログラムの内容は、粗そのままで、Host名とPortをTEXTBOXから設定できるように
変えただけのプログラムです。

この時、LocalHost(127.0.0.1[同一マシン上])上ではクライアント及びサーバのプログラムは
問題なく動作するのですが、各プログラムを別々のマシンで実行すると、

「System.Net.Sockets.SocketException: 対象のコンピュータによって拒否されたため、接続できませんでした。
at System.Net.Sockets.TcpClient..ctor(String hostname, Int32 port)」

というエラーが表示され通信ができません。

 このとき、サーバプログラムは、127.0.0.1の7000番で待機し、クライアントは、サーバの
IPとPortを指定してデータ送信を行っております。

 お互いのマシン間でPingは通ります。
 また、Windowsファイアウォールも無効にして実施しています。

 本現象については、MSDNの「同期サーバー ソケットの例」と「同期クライアント ソケットの例」を
使用しても現象は同じです。

 プログラムの問題ではなく環境の問題とは思いますが、、考えられる原因についてご教示方宜しくお願いします。

 環境:(PC2台共同じ)
  WindowsXP(SP2)
  Microsoft Visual Studio .NET 2003
■No19462に返信(acyacyaさんの記事)
>  このとき、サーバプログラムは、127.0.0.1の7000番で待機
こんちは
以前に、VB2003で同じことを経験しました。
1. Dim objTcpListener1 As New System.Net.Sockets.TcpListener(intPortNo)
と、旧形式を使ったらサーバーは反応してOKでした
2.HELPでは、IPAddress.Any は0.0.0.0 とありますが、これを使ってみたら?
 正しい所は、私も知りたいものです。すみません、中途半端で・・
y4yamaさんありがとうございました。

 ご教示頂いた2つの方法どちらでも別々のPC間で通信が出来ました。

ヘルプの「TcpListener コンストラクタ (IPAddress, Int32) [Visual Basic]」に「どのローカル アドレスに割り当ててもかまわない場合は、 localaddr パラメータに IPAddress.Any を指定します。」
と記載がありましたが、意味がわからず読み飛ばしておりました。。。

「IPAddress.Any フィールド [Visual Basic]」には、「 Socket のインスタンスが、すべてのネットワーク インターフェイスでクライアントによるネットワーク利用を待機する必要があることを示します。」
とありました。

 読解力が無くお手数をおかけしました。

 ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板