[Moscow.pm] Perl Sockets: определить флаги tcp

Vany Serezhkin ivan на serezhkin.com
Пт Июн 28 07:02:50 PDT 2013


Привет.

Как известно хэндлер с сокетом можно закрывать с двух сторон,
Когда кто то шлёт FIN - Это означает что он не будет больше слать 
данные, это не значит что он не будет их принимать.
В хорошей реализации это приводит к eof на чтение из сокета, на который 
пришёл FIN.
Предлагаю
1. perldoc -f getsockopt
2. вытащить из кишок вашей библиотеки сокет.
3. совместить полученное в 1. и 2.
4. прочитать стивенса.








On 28.06.2013 16:26, Геннадий Евгеньевич wrote:
> Доброе время суток. Опишу ситуацию:
>
> Есть приложение типа cliet-server, между ними бегают туда-сюда пакеты 
> по протоколу SMPP, в ходе работы возникает ситуация, когда серверная 
> сторона шлет tcp с флагами FIN+ACK, но т.к. я работаю с 
> SMPP/perlsockets на уровень выше, я об этом не знаю, и пока сокет не 
> закроется, моя клиентская часть по прежнему продолжает слать SMPP 
> пакеты, что является не правильно. Вопрос заключается в том, как можно 
> определить низкоуровневое хождение пакетов относительно моего 
> соединения, на ум приходит конечно снифинг всего, но может есть какая 
> технология иная, позволяющая решить мой вопрос?
>
> os: OS FreeBSD/Debian
>
> , мне необходимо определить с каким флагами ходят пакеты и если пришел 
> пакет с [FIN, ACK] тогда я ничего не делаю, ОС сама шлет в ответ RST
> -- 
> --
> С уважением Геннадий Евгеньевич
>
>


-- 
WBR, Vany
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20130628/1c03a367/attachment.html>


Подробная информация о списке рассылки Moscow-pm