The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"FIN-ACK-RST ?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"FIN-ACK-RST ?"
Сообщение от Dvorkin emailИскать по авторуВ закладки on 17-Дек-03, 15:20  (MSK)
уважаемые сотоварищи!

Linux 2.4.18mdk6
столкнулся с такой проблемой.
имеется сокет TCP. типа client
после создания сокета он переводится в режим NONBLOCK, устанавливается linger: { 1, 0}.
устанавливается соединение... обмен данными...
вот когда Я закрываю соединение этим сокетом, клиенту шлется RST и сокет считается закрытым, все хорошо. клиент закрывает (для него это практически естественный способ, не спрашивайте, что за клиент :). а вот когда клиент закрывает сокет (например, не получает от меня ниче в течени 10 сек и решает что можно отавалиться), происходит следующее:

1) client.port > mysocket.port F seq_number
2) mysqocket.port > client.port . ack
клиент ждет от меня FIN2 2 секунды, потом:
3) client.port > mysocket.port R seq_number
все, соединение изчезает из нетстата! при этом мой неблокируемый recv ниче не сообщает. Я получаю сообщение о том что ECONNRESET только когда в следующий раз пытюсь записать что-нибудь в этот сокет.

Есть ли какие мысли? Я уже замучался. Сутки сижу, не пойму в чем дело.  И поллом, и recvmsg(ERRQUEUE) пробовал...

WBR, Dvorkin

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "FIN-ACK-RST ?"
Сообщение от dmitry emailИскать по авторуВ закладки on 18-Дек-03, 11:21  (MSK)
>уважаемые сотоварищи!
>
>Linux 2.4.18mdk6
>столкнулся с такой проблемой.
>имеется сокет TCP. типа client
>после создания сокета он переводится в режим NONBLOCK, устанавливается linger: { 1,
>0}.
>устанавливается соединение... обмен данными...
>вот когда Я закрываю соединение этим сокетом, клиенту шлется RST и сокет
>считается закрытым, все хорошо. клиент закрывает (для него это практически естественный
>способ, не спрашивайте, что за клиент :). а вот когда клиент
>закрывает сокет (например, не получает от меня ниче в течени 10
>сек и решает что можно отавалиться), происходит следующее:
>
>1) client.port > mysocket.port F seq_number
>2) mysqocket.port > client.port . ack
>клиент ждет от меня FIN2 2 секунды, потом:
>3) client.port > mysocket.port R seq_number
>все, соединение изчезает из нетстата! при этом мой неблокируемый recv ниче не
>сообщает. Я получаю сообщение о том что ECONNRESET только когда в
>следующий раз пытюсь записать что-нибудь в этот сокет.
>
>Есть ли какие мысли? Я уже замучался. Сутки сижу, не пойму в
>чем дело.  И поллом, и recvmsg(ERRQUEUE) пробовал...
>
>WBR, Dvorkin

не ужели ни у кого никаких мыслей?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "FIN-ACK-RST ?"
Сообщение от SergeiZz Искать по авторуВ закладки on 19-Дек-03, 11:12  (MSK)
>>устанавливается соединение... обмен данными...
>>вот когда Я закрываю соединение этим сокетом, клиенту шлется RST и сокет
>>считается закрытым, все хорошо. клиент закрывает (для него это практически естественный
>>способ, не спрашивайте, что за клиент :). а вот когда клиент
>>закрывает сокет (например, не получает от меня ниче в течени 10
>>сек и решает что можно отавалиться),
Ничего не понял: кто закрывает, что закрывает, когда читает, когда пишет,
откуда отваливается...

>происходит следующее:
>>1) client.port > mysocket.port F seq_number
>>2) mysqocket.port > client.port . ack
>>клиент ждет от меня FIN2 2 секунды, потом:
>>3) client.port > mysocket.port R seq_number
>>все, соединение изчезает из нетстата! при этом мой неблокируемый recv ниче не
>>сообщает. Я получаю сообщение о том что ECONNRESET только когда в
>>следующий раз пытюсь записать что-нибудь в этот сокет.
Вполне возможная ситуация. Что именно удивляет?

>не ужели ни у кого никаких мыслей?
Мысли есть. Ответа нет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "FIN-ACK-RST ?"
Сообщение от Dvorkin emailИскать по авторуВ закладки on 19-Дек-03, 11:51  (MSK)
>>>устанавливается соединение... обмен данными...
>>>вот когда Я закрываю соединение этим сокетом, клиенту шлется RST и сокет
>>>считается закрытым, все хорошо. клиент закрывает (для него это практически естественный
>>>способ, не спрашивайте, что за клиент :). а вот когда клиент
>>>закрывает сокет (например, не получает от меня ниче в течени 10
>>>сек и решает что можно отавалиться),
>Ничего не понял: кто закрывает, что закрывает, когда читает, когда пишет,
>откуда отваливается...
ну клиент закрывает сокет с моей программой.

>
>>происходит следующее:
>>>1) client.port > mysocket.port F seq_number
>>>2) mysqocket.port > client.port . ack
>>>клиент ждет от меня FIN2 2 секунды, потом:
>>>3) client.port > mysocket.port R seq_number
>>>все, соединение изчезает из нетстата! при этом мой неблокируемый recv ниче не
>>>сообщает. Я получаю сообщение о том что ECONNRESET только когда в
>>>следующий раз пытюсь записать что-нибудь в этот сокет.
>Вполне возможная ситуация. Что именно удивляет?
что ECONNRESET в recv нет при этом.

>
>>не ужели ни у кого никаких мыслей?
>Мысли есть. Ответа нет.
я уже нашел ответ. спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру