LINUX.ORG.RU

Проюлема с connect()


0

0

Совершенно негаданно натолкнулся на следующую проблему. При написании сетевого клиента само собой вызывается connect(). Так вот этот коннет ни в какую не хочет коннектиться. А прога делает приблизительно следующее. struct sockaddr_in server; корректно заполняет данную структуру (проверено) затем вызываем if ((sckt=socket(AF_INET,SOCK_STREAM,0))==-1) return -1; if (connect(sckt,(struct sockaddr *)&server,sizeof(server))==-1) return -2; Вот эта конструкция создает сокет и пытается установить соединение с удаленной машиной, но ничерта не выходит. Огромная просьба подсказать где грабли? P.S. И если кто знает русскоязычный чат по linux огромная просьба подсказать.


errno=22, что не попадает не под один из предложенных вариантов errno для connect(). Что делать?

polecat
() автор топика
Ответ на: комментарий от polecat

то, что некоторые коды возврата не описаны в документации еще ничего
не значит. EINVAL при connect означает неправильную длину address
family или неправильный адрес в sockaddr structure

Z0termaNN
()

А переменню sin_port в структуре server не забыл конвертнуть функцией htons(u_short). Я в свое время ловил такой косяк.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за помощь. Я справился с предыдущей проблеммой, только теперь появилась другая. Самостоятельное клиентское приложение работает на ура. Но стоило мне запихнуть основной функционал в shared library как уже ничего не проходит. (Использую для InterBase 6.01 как UDF) Теперь функция connect() так же ошибочна, но только errno=111 что есть ECONNREFUSED. Описаное в мане как Connection refused by server. Что делать с этой проблеммой?

polecat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.