- 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;
}
}
//...
}
psina-from-ua 02.06.2010 22:35 # 0
guest 02.06.2010 22:43 # +5
1) создавать сервер на 127.0.0.1 глупо
2) за хардкод айпи админ выбивает глаз
3) за слуханье портов младше 1024 без разрешения IANA админ отрезает ухо
4) вообще убей себя об стену
Nagg 02.06.2010 22:48 # +2
6) PROFIT
guest 02.06.2010 23:31 # −8
guest 03.06.2010 09:47 # +6
Dummy00001 03.06.2010 00:01 # +8
guest 03.06.2010 09:56 # −5
Gukl 03.06.2010 11:34 # 0
while(true) //loop!
:)
Dmitriy 03.06.2010 12:18 # 0
turdman 03.06.2010 15:23 # 0
Dmitriy 03.06.2010 15:38 # 0
Ушат_Помоев 12.06.2010 10:56 # −2
1) Мы можем создать один TCP сокет на нужном порту (номер которого задается в конфигурации). Если порт занят - НЕ НУЖНО РАЗРУЛИВАТЬ ЭТО ДЕЛО АВТОМАТОМ - НУЖНО ПРОСТО СООБЩИТЬ ОБ ЭТОМ ЮЗВЕРЮ. пусть у него голова болит насчет номера порта.
2) Мы его переводим в режим слушателя.
3) Как только слушатель зафиксирует коннект - проверяем всякие проверки и одобряем коннект. При этом создаем новый лисерен на этом порту.
Вот и все премудрости.
Dmitriy 13.06.2010 14:46 # +2
2. Перечитайте еще раз мои сообщения. Алгоритм не столь тривиален, как Вы его поняли. Порт выбирается не только со стороны клиента, но и со стороны сервера. Если быть точнее, клиент становится сервером для каких-то целей. Зачем - не знаю - доступа к исходникам системы клиен-банк у меня небыло.
3. Если Вы посмотрите MSDN для Framework 1.0 и 4.0 - сильно удивитесь. За последние 10 лет он сильно эволюционировал, и соответственно, то что раньше было невозможно, сейчас естественно. Однако, как знать для какой версии фреймворка это все пишется?
4. Вы представляете себе, что будет когда клиент-банк скажет бухгалтеру что порт занят, и предложит ввести любой доступный порт? Умножьте это на количество подключений в день.
Lure Of Chaos 03.06.2010 18:28 # 0
Ушат_Помоев 12.06.2010 10:49 # −1
nil 12.06.2010 20:17 # 0
И админ доволен, и ухо не теряем!
Ушат_Помоев 13.06.2010 06:26 # +2
Ушат_Помоев 13.06.2010 06:31 # 0
Говногость 13.06.2010 09:58 # 0
Dmitriy 14.06.2010 11:07 # 0
myIP = new IPEndPoint(new IPAddress(new byte[] { 127, 0, 0, 1 }), rnd.Next(1000, 9999));
Таких опечаток можно встретить в любой программе море. Внимательно смотрим на сообщения компилятора о неиспользуемой переменной.