LINUX.ORG.RU

Accept


0

0

accept при новом соединении возвращает 0. это нормально? вообще-то в доке сказано, что возвращает неотрицательное значение в случае успеха, но все же. просто после этого send вываливается с криком Invalid or incomplete multibyte or wide character. размер отправляемого сообщения проверял, правильно.

anonymous

Ну и что? accept возвращает сокетный дескриптор для работы с клиентом, а для того что бы send не ругался попробуй слать после select()

Хотя я могу и ошибаться...

tvn
()

вообще-то 0 - это stdin, если ты его перед этим не закрыл. по сему accept() не должен этот дескриптор возвращать.
приведи здесь кусок кода, в котором ты accept() вызываешь.

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

int main () { struct sockaddr_in srv, clnt; int srv_sock, clnt_sock; char MonitorName[]="localhost.localdomain"; int from_len, new_sd;

if ( (srv_sock = socket (AF_INET, SOCK_STREAM, 0)) < 0 ) { perror(""); exit(1); }

bzero (&srv, sizeof(srv)); srv.sin_family = AF_INET; srv.sin_addr.s_addr = INADDR_ANY; srv.sin_port = htons(SRV_PORT);

if ( i=bind(srv_sock, (struct sockaddr *)&srv, sizeof(srv)) < 0 ) { perror(""); exit(1); } if ( i=listen (srv_sock, 3) < 0) { perror(""); exit(1); }

from_len = sizeof(clnt); if ( (new_sd = accept(srv_sock, (struct sockaddr *)&clnt, (socklen_t *) &from_len) == -1 ) ) { perror(""); exit(1); } }

anonymous
()

Все, разобрался. как всегда - лажа. скобки надо ставить правильно

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