2016-08-14 9 views
0

VBでいくつかのゲームを成功させて、マルチプレイヤーゲームを作ろうとしています。しかし、私はこれをやっている経験がなく、私を助けるためにインターネット上でほとんど見つけることができないので、私は解決策を見つけることができない問題があります。私は代わりにそれを使用して解決策を理解することができるので、私はタグとしてc#を入れましたが、私はVBの言語として使用しています。TCPClientクラスを使用しています: 'ターゲットマシンが積極的にそれを拒否したため、接続できませんでした'

私は、プレイヤー間を接続するためにTCPを使用してゲームを2プレイヤーにしようとしました。

これは、サーバーコードとクライアントコードのTcpClientクラスのTcpListenerクラスを使用して、かなり番目のドキュメントが与えテンプレート使用しています:serverを、clientを。

サーバー:

server = New TcpListener(IPAddress.Any, 48000) 

とクライアント:

Dim client As New TcpClient() 
client.Connect(hostAddr, 48000) 

私は、同じマシン上のサーバーとクライアントの両方を使用してコードをテストしています。 hostAddrを自分のコンピュータのローカルIPアドレスにすると、コードは正常に動作し、2つのプログラム間でメッセージを正常に送信できます。私はhostAddr私の外部IPアドレスを与えるとき

しかし、クライアントコードは、エラーのために動作しない:「対象のコンピュータによって拒否されたため、接続できませんでした」。

私は私のために動作しません、以下を試してみました:

  1. は、すべてのポート

を通じてTCP接続を許可するように私のルータの設定を変更するファイアウォールをオフに切り替え

私はVMでWindows 10を使用しています(これは影響しないことを望みます)。

他にどんなことが起こりうるかについての提案や、それが真であるかどうかを調べるためのデバッグ方法はありますか?また、同じネットワークにないコンピュータでクライアントを実行するように友人に依頼すると、同様の問題が発生するかどうかを知りたいと思います。

答えて

1

開始するには、クライアントマシンとサーバーマシンの両方でファイアウォールの設定を確認する必要があります。ほとんどのファイアウォールはコンピュータへの着信接続をブロックし、手動で必要なポートを開く必要があります。したがって、これが問題かどうかを確認するには、両方のファイアウォールを一時的に無効にすることができます。

次のネットワーキングの問題は、HyperV構成である可能性があります。私は、デフォルトでHyperVが「プライベート」ネットワークスイッチを作成すると考えています。これは、各ゲストOSが自分自身としか話せないことを意味します。あなたはスイッチを作成してVM同士だけが会話できるようにすることができますが、開発のためには通常、ホストのネットワークカードを公開するスイッチを選択し、そのハイパースイッチを使用するゲストはネットワーク上の別のコンピュータ彼らは肉体だった。

もちろん、これはサーバーの指定方法によって異なります。 localhostはこれらの問題の大半をスキップする必要がありますが、ホスト名を使用している場合は、ネットワークアダプタを使用して接続および再接続しようとしている可能性があります。

+0

私は今のところ同じマシンを使用していますので、ファイアウォールをオフにするだけで動作します(最初の部分)。 – Shuri2060

+0

また、私は自分のVMにVirtualBoxを使用しており、インターネットに接続できるように実際のコンピュータを使用するのと同じだと考えました。これは真実ではないと思いますか? – Shuri2060

+0

ありがとう! VM経由のポートフォワーディングを使用して問題を解決しました。本当に問題だったことが判明しました。 – Shuri2060

関連する問題