Приём запросов вне локальной сети TCPListener
есть вот такой код сервера:
using System.Net;
using System.Net.Sockets;
using System.Text;
public class DoWork
{
public static IPAddress ip1;
public static int port1;
public static void Start()
{
Console.WriteLine("IP сервера:");
var ip = Console.ReadLine();
if (!IPAddress.TryParse(ip, out var adress))
{
Console.WriteLine("IP сервера:");
ip = Console.ReadLine();
}
else
{
ip1 = IPAddress.Parse(ip);
}
Console.WriteLine("Port сервера:");
var port = Console.ReadLine();
if (!int.TryParse(port, out int integer))
{
Console.WriteLine("Port сервера:");
port = Console.ReadLine();
}
else
{
port1 =Convert.ToInt32( port);
}
}
public static void Main(string[] args)
{
Start();
byte[] buffer = new byte[1024];
TcpListener server = new TcpListener(ip1, port1);
Console.Out.WriteLineAsync("Запуск сервера...");
server.Start();
Console.Out.WriteLineAsync($"Сервер запущен! \nIP: {ip1}, \nPort: {port1}");
int bytes;
var response = new StringBuilder();
while (true)
{
TcpClient client = server.AcceptTcpClient();
Console.WriteLine($"Новое подключение: {client.Client.RemoteEndPoint}");
NetworkStream stream = client.GetStream();
bytes = stream.Read(buffer);
response.Append(Encoding.UTF8.GetString(buffer), 0, bytes);
Console.WriteLine(response);
}
}
}
Локальный айпи адрес сервера - 192.168.2.101. Хочу сделать так, чтобы к серверу можно было подключаться вне локальной сети, поэтому включил у роутера перенаправление портов и настроил его (скрин ниже)
Для диапазона портов обратился к поисковикам и узнал, что порты с 49001-49150 свободны.
То есть по сути, со стороны клиента нужно ввести: айпи роутера и порт, тогда всё будет работать, верно? Я так и сделал. Что в итоге? В той же локальной сети всё работает без проблем, здесь вопросов нет. Однако, попросил я своих друзей протестировать это, что же случилось? У всех до едино было превышено время отклика. Иными словами, они не могли подключиться к серверу. Может у них какая-то проблема? Окей, написал для телефона простую клиент-программу, чтобы выяснить всё самомоу. Включил мобильный интернет, начал подключение и... Превышено время отклика.
Вопрос довольно очевидный: Что я сделал не так? Как сделать так, чтобы всё работало, и все могли подключаться к серверу вне локальной сети?
Заранее, спасибо всем за помощь!