abc_ Ответов: 2

Vbnet чат по протоколу TCP ip


Всем привет,я создал программу для чата, которая работает, когда я выбираю 192.16.1.2 в качестве своего ip-адреса.

Всякий раз, когда я пытаюсь поставить свой реальный ip-адрес, я получаю следующую ошибку:
System.Net.Sockets.SocketException: 'The requested address is not valid in its context'



мой код таков :

Sub Main()
        Dim localAdd As System.Net.IPAddress = System.Net.IPAddress.Parse("192.168.1.2")
        Dim listener As New System.Net.Sockets.TcpListener(localAdd, portNo)
        listener.Start()

        While True
            Dim user As New ChatClient(listener.AcceptTcpClient)
        End While
    End Sub

Поэтому я предполагаю,что, поскольку в моей локальной сети это нормально, я, должно быть, ошибаюсь в своих командах, когда пытаюсь отправить свой реальный ip-адрес.?
Спасибо заранее.

Что я уже пробовал:

<pre>Sub Main()
        Dim localAdd As System.Net.IPAddress = System.Net.IPAddress.Parse("192.168.1.2")
        Dim listener As New System.Net.Sockets.TcpListener(localAdd, portNo)
        listener.Start()

        While True
            Dim user As New ChatClient(listener.AcceptTcpClient)
        End While
    End Sub

phil.o

Что вы подразумеваете под своим настоящим IP-адресом?

abc_

я имел в виду следующее: У меня есть сервер,который работает на 1 компьютере, и клиент, который работает на другом компьютере с другим ip-адресом, а не в одной сети, другими словами. поэтому,когда я ставлю на ip-адрес сервера ip-адрес, назначенный компьютеру, на котором размещен сервер в oorder для других компьютеров, чтобы подключиться к этому ip-адресу, я получаю это сообщение.

2 Ответов

Рейтинг:
14

RickZeeland

Смотрите раздел как разрешить использование настольных приложений через Брандмауэр Windows здесь:
Сетевая безопасность: Брандмауэр Windows: лучшая защита вашей системы[^]
Поскольку имя панели управления Windows 10 Время от времени меняется, проще всего использовать поиск Windows, ввести "Брандмауэр" и выбрать "разрешить приложение через Брандмауэр Windows".

Вы также можете попробовать IPAddress.Any и используйте порт, как в этом примере: c# - запрошенный адрес недопустим в его контексте, когда я пытаюсь прослушать порт - переполнение стека[^]


Рейтинг:
0

abc_

Решение:

Dim listener As New System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, portNo)


Мне также пришлось выбрать в качестве порта intead 500 порт 5000 и сделать portfowarding.