LINUX.ORG.RU

создание сокета


0

0

вызов s=socket(PF_INET, SOCK_STREAM, 0) возвращает 0, после чего bind (s, (struct sockaddr*) &addr, sizeof(addr)) пишет: Socket operation on non-socket

что неправильно?

anonymous

на первый взгляд - норма \
приведи фрагмент определения структуры sockaddr_in addr;
а лучше просто сделай так:

main()
{
struct sockaddr_in addr;
int s;

s=socket(PF_INET,SOCK_STREAM,0);
if (s==-1) { /* обработка ошибки */ exit (-1);}

bzero(&addr,sizeof(addr));
addr.sin_family=PF_INET;
addr.sin_port=htons(portnum);
addr.sin_addr.s_addr=htonl(INADDR_ANY);

if (bind(s,(struct sockaddr*) &addr,sizeof(addr))==-1)
{ /* обработка ошибки */ exit (-1);}

.... listen, accept,...

Bulash-OFF
()
Ответ на: комментарий от Bulash-OFF

Самое интересное, что код у меня - 1 в 1, в том числе и определение

#include <sys/types.h> #include <sys/socket.h> struct sockaddr_in addr;

а с bzero еще лучше - core dump (см. сообщение чуть ниже). полный глюкодром.

anonymous
()

Похоже, что модуль или библиотека в ядре какая-то недоскомпилена или недоподключена -- был у меня похожий глюк. А еще см. Робачевского, "Операционная система UNIX", там азбучных истин до фига, может выловишь чего. С уважением.

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