Другие языки программирования и технологии

Почему клиент с другого компьютера не подключается к серверу через интернет? Клиент и сервер написаны на C#.

Я написал сервер на C#:
using System;

using System.Threading;

using System.IO;

using System.Collections.Generic;

using System.Text;

using System.Net;

using System.Net.Sockets;

class Server
{

public static void Main()
{
int port = 5959;

try
{
TcpListener listener = new TcpListener(port);
listener.Start();
TcpClient tc = listener.AcceptTcpClient();
NetworkStream stm = tc.GetStream();
if (tc.Connected)
{
Console.WriteLine("Клиент подключён");

}

}
catch (Exception)
{
}

Console.Read();

}

}

Потом написал клиент на C#:

using System;

using System.Threading;

using System.IO;

using System.Collections.Generic;

using System.Text;

using System.Net;

using System.Net.Sockets;

namespace ConsoleApplication2
{
class Client
{
static void Main(string[] args)
{

int port = 5959;
IPAddress address = IPAddress.Parse("10.244.17.149"); // IP адрес сервера, т. е. компьютера на котором находится сервер!

try
{

TcpClient client = new TcpClient();
client.Connect(address, port);
if (client.Connected)
{
Console.WriteLine("Я смог подключится");

}
else
{
Console.WriteLine("Я не смог подключится");
}

}
catch (Exception ex)
{
Console.WriteLine("Клиент не подключился так как: " + ex);
}
Console.Read();

}
}
}

Проблема в том, что клиент подключается к серверу только локально, а мне надо что бы через интернет! Как это сделать?
P.S. Сервер синхронный
Gela Qarcivadze
Gela Qarcivadze
706
И не должно работать через интернет.
Надо купить (выменять, украсть - нужное подчеркнуть) у провайдера "белый" IP-адрес для Вашего сервера.

Подробнее: http://russianproxy.ru/fixed_public_russian_IP_address_compression_encription

Прежде чем устанавливать программы клиента и сервера, пропингуйте компьютер
ПУСК --> Выполнить --> cmd --> ping [ IP-адрес удаленного компьютера ]

Если пинг идет - Вам улыбнулась удача, если нет - печалька.. .:(((
Михаил К
Михаил К
79 995
Лучший ответ
Не вопрос, вписываешь на клиенте в качестве адреса сервера его внешний IP в интернете (если конечно провайдер предоставляет тебе такой адрес) и подключаешься. Интернет от Билайн, судя по всему? Если так, то тебе повезло - все будет работать.
У тебя вероятно динамичный IP, тот который постоянно меняется. Нужен статичный. Есть способ.. . не помню точно как, но поищите в интернете как сделать свой айпи статичным. Еще возможна проблема в том, что если ты подключаешься к интернету через роутер или через модем но с дилаповой сетью, пакет передаваемый серверу теряется, потому что айпи модема или роутера, пакет до него доходит, а дальше теряется, не зная на какой локальный адрес идти.
P.S Защита блока совсем ну уместна тут, так как подключение можно проверить одной строкой условия. И если не ошибаюсь, ошибка не отработает так как нет ссылки на исключение, но это имхо.. . мож в C# по другому.
Ravshan Davidov
Ravshan Davidov
2 024
Михаил К У товарища IP IPAddress.Parse("10.244.17.149");

Следующие диапазоны определены IANA как адреса, выделенные локальным сетям:
10.0.0.0 — 10.255.255.255 (10.0.0.0/8 или 10/8),
172.16.0.0 — 172.31.255.255 (172.16.0.0/12 или 172.16/12),
192.168.0.0 — 192.168.255.255 (192.168.0.0/16 или 192.168/16).

Т.е. это сетевой, локальный IP.
И нет разницы статический он или выделяется динамически для каждой сессии соединения
может быть проброс порта 5959 на роутере сделать?