Я сделал несколько игр в VB успешно и теперь готов перейти к попытке создания многопользовательских игр. Однако, поскольку у меня нет опыта в этом, и я могу найти немного в Интернете, чтобы помочь мне, у меня есть проблема, с которой я не могу найти решение. Я использую VB в качестве языка, хотя я поставил c#
в тегах, потому что вместо этого я могу понять решения, использующие его.Использование класса TCPClient: «Не удалось установить соединение, потому что целевая машина активно отказалась от него»
Я попытался сделать игру 2-х игроков, используя TCP для соединения между игроками.
Он использует TcpListener
класса для серверного кода и TcpClient
класса для кода клиента и в значительной степени использует шаблон, который й документацию дает: server, client.
Сервер:
server = New TcpListener(IPAddress.Any, 48000)
И клиент:
Dim client As New TcpClient()
client.Connect(hostAddr, 48000)
Я тестируя код, используя как сервер и клиент на той же машине. Код работает отлично, когда я делаю hostAddr
локальный IP-адрес моего компьютера, и я могу успешно отправлять сообщения между двумя программами.
Однако, когда я даю hostAddr
мой внешний IP-адрес, клиентский код не работает из-за ошибки: «Никакое соединение не может быть сделано, потому что целевая машина активно отказалась от него».
Я попытался следующие, которые не работают для меня:
Выключение брандмауэра
Изменение мои настройки маршрутизатора, чтобы разрешить соединения TCP через все порты
Я использую Windows 10 в VM (надеюсь, это не повлияет на вещи).
Могу ли я иметь некоторые предложения относительно того, что еще может быть не так, и как я должен отлаживать, чтобы узнать, являются ли они истинными? Кроме того, я хотел бы знать, столкнулся ли я с аналогичными проблемами, если я попрошу друга запустить клиента на своем компьютере (который не находится в той же сети).
Я использую тот же самый компьютер, поэтому просто отключить брандмауэр должен работать (для 1-й части)? – Shuri2060
Кроме того, я использую VirtualBox для своей виртуальной машины и думал, что это будет то же самое, что использовать реальный компьютер, поскольку он может подключиться к Интернету. Думаю, это не так? – Shuri2060
Спасибо! Я исправил проблему с помощью переадресации портов через виртуальную машину - оказалось, что это действительно проблема – Shuri2060