URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3887
[ Назад ]

Исходное сообщение
"вызов connet (tcp) не сразу завершается удачно"

Отправлено borey , 31-Янв-05 15:07 
своим ftp клиентом выполняю параллельную отправку нескольких файлов на ftp сервер.делаю fork()ом пару дочерних процессов и они соединяются с сервером и передают ему файл. потом завершаются и далее передаётся следующий файл опять fork и тд. передаю где то 10 файлов. и где то в середине у меня начинает вызов connet с 21 портом сервера возвращаться с ошибкой cannot assign requested adress, хотя локальный порт отправки не занят. но если вызову connect ещё раз, то со второго третьего раза соединяется. Очень прошу помочь никак не могу разобраться. заранее благодарен

Содержание

Сообщения в этом обсуждении
"вызов connet (tcp) не сразу завершается удачно"
Отправлено Михаил , 31-Янв-05 18:32 
>своим ftp клиентом выполняю параллельную отправку нескольких файлов на ftp сервер.делаю fork()ом
>пару дочерних процессов и они соединяются с сервером и передают ему
>файл. потом завершаются и далее передаётся следующий файл опять fork и
>тд. передаю где то 10 файлов. и где то в середине
>у меня начинает вызов connet с 21 портом сервера возвращаться с
>ошибкой cannot assign requested adress, хотя локальный порт отправки не занят.
>но если вызову connect ещё раз, то со второго третьего раза
>соединяется. Очень прошу помочь никак не могу разобраться. заранее благодарен
Может проблема в том, что сервер не принимает более N коннектов с одного логина?


"вызов connet (tcp) не сразу завершается удачно"
Отправлено borey , 01-Фев-05 07:45 
>>своим ftp клиентом выполняю параллельную отправку нескольких файлов на ftp сервер.делаю fork()ом
>>пару дочерних процессов и они соединяются с сервером и передают ему
>>файл. потом завершаются и далее передаётся следующий файл опять fork и
>>тд. передаю где то 10 файлов. и где то в середине
>>у меня начинает вызов connet с 21 портом сервера возвращаться с
>>ошибкой cannot assign requested adress, хотя локальный порт отправки не занят.
>>но если вызову connect ещё раз, то со второго третьего раза
>>соединяется. Очень прошу помочь никак не могу разобраться. заранее благодарен
>Может проблема в том, что сервер не принимает более N коннектов с
>одного логина?
да нет. параллельно отправлял и 10 файлов(10 коннектов) за один присест. ftp сервер (ftpd-BSD) на подконтрольной машине так что настраиваю как хочу.
ядро 2.4 linux RH


"вызов connet (tcp) не сразу завершается удачно"
Отправлено Xenu , 01-Фев-05 23:10 
> ...
> и где то в середине
>у меня начинает вызов connet с 21 портом сервера возвращаться с
>ошибкой cannot assign requested adress, хотя локальный порт отправки не занят.

Какой код ошибки в errno после того, как connect не смог присоединится?

Может быть слишком частые попытки соедининие и socket еще не успел очиститься.



"вызов connet (tcp) не сразу завершается удачно"
Отправлено borey , 02-Фев-05 07:45 
>> ...
>> и где то в середине
>>у меня начинает вызов connet с 21 портом сервера возвращаться с
>>ошибкой cannot assign requested adress, хотя локальный порт отправки не занят.
>
>Какой код ошибки в errno после того, как connect не смог присоединится?
>
>
>Может быть слишком частые попытки соедининие и socket еще не успел очиститься.
>
код 99 EADDRNOTAVAIL
а что значит не успел очистится сокет?
какими вызовами узнать готов он или нет?
странно что когда у меня 2 параллельных соединения ошибки появляются только в одном.
спаибо



"вызов connet (tcp) не сразу завершается удачно"
Отправлено Xenu , 02-Фев-05 23:46 
>код 99 EADDRNOTAVAIL
>а что значит не успел очистится сокет?
>какими вызовами узнать готов он или нет?
>странно что когда у меня 2 параллельных соединения ошибки появляются только в
>одном.
>спаибо

есть у сокета или у tcp, точно не помню, параметер который называется linger или linger timeout, он определяет время в течении которого сокет будет занят даже если соединие завершено.
я встречал ситуацию когда программа пыталась открывать сокет достаточно часто и нарывалась на нехватку портов, но это происходило на локальной машине, так что в данной ситуации объяснение может быть другим.


"вызов connet (tcp) не сразу завершается удачно"
Отправлено borey , 04-Фев-05 07:46 
я посмотрел. этот параметр отвечает за закрытие сокета. те как будет обрабатываться дескриптор функцией close().но у меня для каждого нового файла создаётся новый сокет и новое соединение. (так библиотека работает, принимает файл и отсылает на сервер,на новый файл новый вызов).раз я создаю новый сокет,а он нормально создаётся, может ли ли то как я закрыл старый влиять на connect исходящий с нового? вроде нет.
спасибо за рекомендации. но проблему так и не решил пока.есть ли ещё какие нибудь мнения