FTPクライアントを作った時、WindowsXPの開発環境では問題なく動作していたのが、本番環境のWindowsServer2008ではハングアップしてしまった。最初はファイヤーウォールが問題かと考えいろいろ設定したのだが一向に解消されない。
仕方なく本番環境と同じWindowsServer2008にVisualStudioをインストールして動作確認したところ、やっと原因が判明した。
問題は自分のIPアドレスを取得する際の Dns.GetHostEntry(Dns.GetHostName()).AddressList(0) に問題があった。
XPまでなら、IPアドレスはIPv4つまり、192.168.0.0などで表現されるIPアドレスが取得されるが、Vista以降ではネットワークアダプタにIPv6のインターネットプロトコルが標準で有効になっているのでAddressList(0)ではIPv4ではなくIPv6のアドレスが取得されてしまうからだった。
そこでIPv4を確実に取得するように以下の修正が必要になる。
(Imports System.Net を忘れずに)
Dim ipa As IPAddress
Dim iphEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
For Each ipAddr As IPAddress In iphEntry.AddressList
If ipAddr.AddressFamily = Sockets.AddressFamily.InterNetwork Then
ipa = ipAddr
Exit For
End If
Next
AddressFamilyを調べることでIPv4かIPv6か判定できる。
・
IPv4=Sockets.AddressFamily
.InterNetwork・
IPv6=Sockets.AddressFamily
.InterNetworkV6
posted by なっちゃん at 17:43| 静岡 ☔|
Comment(0)
|
TrackBack(0)
|
VB.NET Tips
|

|