- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
static void Main(string[] args)
{
IPEndPoint myIP = null;
TcpListener server = null;
bool loop = true;
while (loop)
{
try
{
Random rnd = new Random(DateTime.Now.Millisecond);
new IPEndPoint(new IPAddress(new byte[] { 127, 0, 0, 1 }), rnd.Next(1000, 9999));
server = new TcpListener(myIP);
loop = false;
}
catch
{
loop = true;
}
}
//...
}
1) создавать сервер на 127.0.0.1 глупо
2) за хардкод айпи админ выбивает глаз
3) за слуханье портов младше 1024 без разрешения IANA админ отрезает ухо
4) вообще убей себя об стену
6) PROFIT
while(true) //loop!
:)
1) Мы можем создать один TCP сокет на нужном порту (номер которого задается в конфигурации). Если порт занят - НЕ НУЖНО РАЗРУЛИВАТЬ ЭТО ДЕЛО АВТОМАТОМ - НУЖНО ПРОСТО СООБЩИТЬ ОБ ЭТОМ ЮЗВЕРЮ. пусть у него голова болит насчет номера порта.
2) Мы его переводим в режим слушателя.
3) Как только слушатель зафиксирует коннект - проверяем всякие проверки и одобряем коннект. При этом создаем новый лисерен на этом порту.
Вот и все премудрости.
2. Перечитайте еще раз мои сообщения. Алгоритм не столь тривиален, как Вы его поняли. Порт выбирается не только со стороны клиента, но и со стороны сервера. Если быть точнее, клиент становится сервером для каких-то целей. Зачем - не знаю - доступа к исходникам системы клиен-банк у меня небыло.
3. Если Вы посмотрите MSDN для Framework 1.0 и 4.0 - сильно удивитесь. За последние 10 лет он сильно эволюционировал, и соответственно, то что раньше было невозможно, сейчас естественно. Однако, как знать для какой версии фреймворка это все пишется?
4. Вы представляете себе, что будет когда клиент-банк скажет бухгалтеру что порт занят, и предложит ввести любой доступный порт? Умножьте это на количество подключений в день.
И админ доволен, и ухо не теряем!
myIP = new IPEndPoint(new IPAddress(new byte[] { 127, 0, 0, 1 }), rnd.Next(1000, 9999));
Таких опечаток можно встретить в любой программе море. Внимательно смотрим на сообщения компилятора о неиспользуемой переменной.