- PR -

VistaでのSocketサーバーについて

1
投稿者投稿内容
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2008-07-11 10:44
いつもお世話になります。
ソケットサーバーの経験が浅い為、わからないことがあり
質問させていただきます。
以前、XPにて作成したソケットサーバをVistaへ移行したいと考えて
いるのですが、VistaがIpv6対応の為かどうかはよくわからないのですが、
クライアントからの接続ができないようになってしまいました。
(OS:Vista Business 開発環境VB 2005)

サーバーのプログラムとしては、
Dim ipAdd As System.Net.IPAddress = System.Net.Dns.GetHostEntry("172.XX.XX.XX".AddressList(0)
Dim listener As New System.Net.Sockets.TcpListener(ipAdd, 10000)
listener.Start()
Dim tcp As System.Net.Sockets.TcpClient = listener.AcceptTcpClient()
としており、
クライアントの接続は
dim tcpClient as New System.Net.Sockets.TcpClient
tcpClient.Connect("172.XX.XX.XX", 10000)
としていますが接続ができません。

ご教授の程よろしくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-07-11 11:02
そのVista機が外部からの通信をブロックしているのが原因な気がしますので、
http://windowshelp.microsoft.com/Windows/ja-JP/Help/df3de57e-86d8-4cd7-808d-9907561b21bc1041.mspx
http://windowshelp.microsoft.com/Windows/ja-JP/Help/4da18300-9044-47b6-9038-595c78db81ab1041.mspx
このへんを参考にして通信が許可されているか確認し、されていなければ許可してあげるとよいでしょう。
別途パーソナルファイアウォールなどを使っている場合は、その製品のマニュアルを見てください。

引用:

VistaがIpv6対応の為かどうかはよくわからないのですが、


初期設定でIPv4にも対応していますので、安心してください。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-07-11 11:18
引用:
Dim ipAdd As System.Net.IPAddress = System.Net.Dns.GetHostEntry("172.XX.XX.XX".AddressList(0)


XP でも AddressList の 0 決め撃ちじゃ拙いと思いますが。IPv6 がインストールされてたら IPv6 のアドレスを返す可能性がありますよ。
各 IPAddress の AddressFamily を調べないと。
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2008-07-13 22:19
ご返事いただきありがとうございます。
ファイアーウォールについては、無効にしてみても
接続ができなかったので他の原因ではないかと考えています。
(net statでListening しているのを見た所、指定したIPにて
Listeningしていないので、これが原因であると思うのですが、
なぜ、そうなるのかがよくわかりません。)
又、hongliangさんからご指摘あった件ですが、
IPAddress の AddressFamily を調べるとは具体的にはどのような
事をする必要があるのでしょうか?
(以前記載した、AddressList の 0 決め撃ちはサンプルプログラムを
見て、同様に記載しXPで接続できたので良いと思っていたのですが、
知識不足で申し訳ありません。)
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-07-13 22:44
IPAddress.AddressFamily プロパティ
引用:

プロパティ値
IPv4 の場合は InterNetwork、IPv6 の場合は InterNetworkV6 を返します。


配列の要素を順にたどって、AddressFamily プロパティ値が InterNetwork であれば、その値を使うように書けばよいです。
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2008-07-15 12:40
Hongliangさん、rainさん
ありがとうございます。
おかげで解決することができました。



1

スキルアップ/キャリアアップ(JOB@IT)