[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