d4s: (Default)
[personal profile] d4s
А это правда, что в б-гомерзкой ОС нельзя повесить несколько процессов слушать 1 UDP порт?
Студент утверждает, что так и есть, но что-то меня гложут смутные сомнения.

PS с вендой не общаюсь -- нюансов не знаю.

UPD: оказывается он не наследовал, а просто запускал второй процесс и делал bind после опции SO_REUSEADDR. Так и в линухах не работает. Тем не менее вопрос остается открытым.

Date: 2013-12-12 03:57 (UTC)
From: [identity profile] vp.livejournal.com
Можно, да. Но вроде в ТСР данные будут приходить только в последний, когда сдохнет - в предпоследний.
А в UDP вроде во все слушатели.

Date: 2013-12-12 07:06 (UTC)
From: [identity profile] d4s.livejournal.com
ребе, вы меня пугаете.
про тэцэпэ я точно знаю, что работает нормально. вот один из первых же примеров для старых систем: http://support.microsoft.com/kb/150523/en-us
upd: наверно неправильная ссылка -- там клиентские сокеты наследуются. зато нарыл адов ад -- http://support.microsoft.com/kb/2398202/en-us
Edited Date: 2013-12-12 07:20 (UTC)

Date: 2013-12-12 05:53 (UTC)
From: [identity profile] arush-damage.livejournal.com
Честно говоря, не помню.
Но если через LSP включиться то и тисипи можно кучей процессов слушать %)
Собственно так файрволы и работают вроде.

Date: 2013-12-12 07:55 (UTC)
From: [identity profile] d4s.livejournal.com
вроде ж умолчальное поведение, не?

Date: 2013-12-12 09:51 (UTC)
From: [identity profile] mr-s-o-u-l.livejournal.com
Студенты лгут.

Date: 2013-12-12 11:00 (UTC)
From: [identity profile] serbod.livejournal.com
Судя по документации, можно. Но придется как-то синхронизировать чтение так, чтобы один процесс читал с флагом MSG_PEEK (данные после чтения остаются в сокете), а другой после него читал тот же объем без флага.

Date: 2013-12-12 13:58 (UTC)
From: [identity profile] arush-damage.livejournal.com
Но тут наступает другая засада: http://support.microsoft.com/kb/140263 recv() w/MSG_PEEK Always Returns Wrong Buffer Size %)))

Date: 2013-12-12 21:48 (UTC)
From: [identity profile] d4s.livejournal.com
ненене... тут без разницы какой из процессов получит.
у меня времени в исходниках копаться не было на лабе, а у человека не получалось. Точнее получалось запустить, но пакеты обрабатывал только один процесс. В общем в апдейте я отписал, почему не получалось. А вот с наследованием через duplicatesocket все нормально вроде.

Profile

d4s: (Default)
d4s

October 2016

M T W T F S S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2017-09-26 02:00
Powered by Dreamwidth Studios