|
分類:[.NET 全般]
VB.NETを使っていて、 職場と自宅PCの間でデータのやりとりを行うソフトを作りたいと考えています。 TCPによるデータ転送の方法は https://dobon.net/vb/dotnet/internet/tcpclientserver.html このページに記載されているものを使用しました。
どうも、職場にあるPC同士でローカルIPアドレスを使用した場合だと うまく通信できております。
しかし、職場と自宅PCの間で通信しようとするとうまくいきません。 恐らく、ルーターが原因なのではないかと思います。
サーバー側の設定で自身のグローバルIPアドレス 160.237.xxx.xx をlistenerに設定して、 listener.Start() を実行すると以下のエラーが発生します。
型 'System.Net.Sockets.SocketException' のハンドルされていない例外が System.dll で発生しました
追加情報:要求したアドレスのコンテキストが無効です。
以下のようにして任意のIPアドレスを受け入れる設定にするとエラーは発生しないのですが、
listener = New System.Net.Sockets.TcpListener( System.Net.IPAddress.IPv6Any, 2001) 'IPv6Onlyを0にする listener.Server.SetSocketOption( System.Net.Sockets.SocketOptionLevel.IPv6, System.Net.Sockets.SocketOptionName.IPv6Only, 0)
クライアント側から、 160.237.xxx.xx のIPアドレスに通信しようとしても いつまで経っても通信が成立しません。
一体、どのように設定すれば良いのでしょうか?
ちなみ、ポートは以下のバッチファイルを使って、解放しております。
netsh advfirewall firewall add rule name="test firewall" dir=in action=allow protocol=tcp localport=2001 profile=private,public localip=any
netsh advfirewall firewall add rule name="test firewall4" dir=out action=allow protocol=tcp remoteport=2001 profile=private,public remoteip=any
|