Vladimir
конвертацию чего?
Cuno
Evented объекта
Vladimir
мне вот вообще интересно Evented можно реализовать вне крейта mio?
Cuno
https://github.com/alexcrichton/mio-named-pipes/blob/master/src/lib.rs#L364
պլհկ
Anton
Усе вопросов нет =)
Vladimir
знать бы еще что у них внутрях windows::Binding
Vladimir
я вообще про то, что без ансейфных внутренних вещей это не реализуемо, а значит и конвертация в u32 не самое большое неудобство
պլհկ
mio_uds почитай
պլհկ
Там тривиально
Vladimir
во, там и так просят везде std::os::unix::io::RawFd на юниксах, так что конвертнуть мне кажется не сильно большая проблема.
Мне почему-то кажется что тут большая проблема с виндой и у них всё там не по человече
Vladimir
вот https://doc.rust-lang.org/nightly/std/os/windows/raw/type.SOCKET.html
u64
Vladimir
а хендл https://doc.rust-lang.org/nightly/std/os/windows/raw/type.HANDLE.html
вообще usize
Vladimir
как-то не консистентно
Vladimir
а то что у линукса кстати fd = 32 бита, а реальных возможных адрессов 48 бит эт норм?
Anton
ага =)
Vladimir
а файлов то вообще потенциально бесконечно
Anton
там не все так просто с верхними 16 битами
Anton
в обычных условиях порог открытых хендлов не будет превышен
Vladimir
ок
Vladimir
ipv6
Vladimir
128 бит на адресс + 16 на порт
Anton
нинай
Anton
кстати и при 65535, на выжимали 1кк соединений
Anton
или там IPv6 был просто не написали
Vladimir
ну вообще да, там же каждое соединение это пара пар (адресс, порт)
Vladimir
т.е. и при возможно 48 * 2 бит
Vladimir
так ведь?
Anton
https://habrahabr.ru/post/123154/
Anton
Например
Anton
как так
Anton
все время лень было посмотреть как они обошли лимит портов
Anton
ну из идей что network layer переключает порты
Anton
после лимита
Anton
линуксовый
Vladimir
так а причем тут лимит портов?
Vladimir
порт вообще один у них
Vladimir
они же сервер х)
Vladimir
соединение это пара пар (адресс, порт)
Vladimir
т.е. даже имея один интерфейс и один порт, остается еще 48 бит возможных адрессов подключения
Anton
так если протокол двунаправленый он его accept на listen порту а потом выдает на том же ip другой порт
Anton
для обмена
Anton
или я что то путаю?
Vladimir
зачем выдавать другой порт?
Vladimir
не нужен никакой другой порт
Anton
сек
Anton
да чет туплю
Anton
это лимит клиента
Vladimir
?
Anton
10.233.255.1:9072 10.233.255.1:46030
Anton
клиенту для соединения выдается порт
Vladimir
да выдает
Anton
что будет когда превысит 65к клиентских подключений?
Vladimir
но это поидее тоже не лимит
Anton
на том же ip
Vladimir
если учесть что соединение характеризуется парой пар х)
Anton
уверен?
Vladimir
то поидее клиент может к разным узлам подключаться с одного порта
Vladimir
ну я знаю, что есть флаг даже для разрешения переиспользования
Vladimir
а как ядра реализованы и тд. не вкурсе
Anton
это другое
Anton
reuseaddr reuseport?
Vladimir
я лишь о потенциальной возможности говорю
Anton
это флаги для серверной стороны
Vladimir
ну ок
Anton
на одном адресе и порту можно повесить слушать разные сервера
պլհկ
Удаленный порт это не дескриптор
Vladimir
ну в любом случае
Vladimir
потенциально пакеты можно отличить
Vladimir
так как в каждом пакете есть адресс получателя и отправителя
Vladimir
я думаю в ядрах это не реализовано, так как процедура создания соккета вроде как не зависит от процедуры подключения, и вроде как на этапе создания порт уже выделен
Anton
Vladimir
ну у них думаешь коннекты с одной машины?
Anton
Возможно он имел вввиду что соединие это не пара пар
Anton
а пара с одного ip
Vladimir
мне кажется у низ банально коннекты с разных виртуальных интерфейсов
Anton
So how can you get more ports?
One approach would be to stack additional IP addresses using more interfaces. If your system has multiple NICs this is easier, but even with just a single NIC, one can make use of virtual interfaces (aka. aliases) to allocate more IPs if needed.
NOTE: Using aliases have been supplanted by iproute2 which you can use to stack IP addresses on a single interface (i.e. eth0) instead.
Vladimir
что значит пара с одного ip
պլհկ
Каких ещё интерфейсов