Два WinSock Server на одном порту. Возможно ?
От: tararasyk  
Дата: 31.01.03 09:35
Оценка:
Меня интересует есть ли какая возможность запустить два WinSock сервера на одной машине на одном порту, то есть одинаковые копии, если это реально, то сколько максимум возможно запустить таких копий?

Буду, благодарен за любые ответы.
Re: Два WinSock Server на одном порту. Возможно ?
От: vasketsov Россия http://ntprog.by.ru
Дата: 31.01.03 09:53
Оценка:
Здравствуйте, tararasyk, Вы писали:

Так как все провайдеры транспорта — IFS, то сокеты представляют из себя хэндлы на драйвера устройств режима ядра (\Device\RawIp, \Device\Tcp, \Device\Udp, \Device\Ip, \Device\Afd, ...). Явного запрета на DuplicateHandle нет (более того, у всех провайдеров есть даже WSPDuplicateSocket), однако реализация сопутствующих структур (например, указатель на сокетные данные на NT хранится в ТEB-е и они даже не синхронизируются для разных потоков) может обнажить весьма заметные грабли от системы к системе.
Васкецов Сергей
http://registry.km.ru
Re[2]: Два WinSock Server на одном порту. Возможно ?
От: trial  
Дата: 31.01.03 09:57
Оценка:
V>Так как все провайдеры транспорта — IFS, то сокеты представляют из себя хэндлы на драйвера устройств режима ядра (\Device\RawIp, \Device\Tcp, \Device\Udp, \Device\Ip, \Device\Afd, ...). Явного запрета на DuplicateHandle нет (более того, у всех провайдеров есть даже WSPDuplicateSocket), однако реализация сопутствующих структур (например, указатель на сокетные данные на NT хранится в ТEB-е и они даже не синхронизируются для разных потоков) может обнажить весьма заметные грабли от системы к системе.

Помоему вопрос был про работу на одном порту, а не одном сокете.
Можно ведь bind'у скормить SO_REUSEADDR, сокеты будут разные, а порт — один
Или я не прав?
Re[3]: Два WinSock Server на одном порту. Возможно ?
От: trial  
Дата: 31.01.03 10:12
Оценка:
T>Можно ведь bind'у скормить SO_REUSEADDR, сокеты будут разные, а порт — один

имелся в виду setsockopt
Re[3]: Два WinSock Server на одном порту. Возможно ?
От: vasketsov Россия http://ntprog.by.ru
Дата: 31.01.03 10:32
Оценка:
Здравствуйте, trial, Вы писали:

T>Помоему вопрос был про работу на одном порту, а не одном сокете.

Открытие сокета на определенном порту, формально, является открытием хэндла на девайс.
То есть, теоретически, можно вообще ничего не открывая, писать в чужой сокет из чужого процесса.
Васкецов Сергей
http://registry.km.ru
Re: Два WinSock Server на одном порту. Возможно ?
От: tararasyk  
Дата: 31.01.03 11:16
Оценка:
а не подскажите как правильно вызвать ф-цию(синтасис) bind вместе с SO_REUSEADDR чтоб сокеты были разные, а порт — один ?
Re[2]: Два WinSock Server на одном порту. Возможно ?
От: trial  
Дата: 31.01.03 12:11
Оценка:
Здравствуйте, tararasyk, Вы писали:

T>а не подскажите как правильно вызвать ф-цию(синтасис) bind вместе с SO_REUSEADDR чтоб сокеты были разные, а порт — один ?


имелся в вижу не bind а setsockopt...
а у неё параметр есть — optval, в него и надо поместить...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.