Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Зависание при вызове accert


Автор: Ofer 2.4.2009, 15:41
Добрый день! При пошаговом выполнении программы заметил, что управление из функции accert не возвращается. Почему?

Код

#include <winsock2.h>
#include <stdio.h>
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
    WSADATA WsaData;
    SOCKET s,s1;
    SOCKADDR_IN sin,from;
    char *RecvBuffer;
    char *MsgText;
    int err,fromlen;
    MsgText = "<html><b>Hello!!</b></html>";
    err = WSAStartup(0x0101,&WsaData);
    if(err == SOCKET_ERROR)
    {
        printf("WsaStartup() failed: %ld\n",GetLastError());
        return 1;
    }
    s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    sin.sin_family = AF_INET;
    sin.sin_port = htons(3331);
    sin.sin_addr.s_addr = INADDR_ANY;
    err = bind(s,(LPSOCKADDR)&sin,sizeof(sin));
    err = listen(s,SOMAXCONN);
    fromlen = sizeof(from);
    s1 = accept(s,(struct sockaddr*)&from,&fromlen);                      //<----- в этом месте
    printf("accept connection from %s, port %d\n", inet_ntoa(from.sin_addr),htons(from.sin_port));
    while(recv(s1,RecvBuffer,sizeof(RecvBuffer),0)!=SOCKET_ERROR)
    {
        printf("%c",RecvBuffer[0]);
        send(s1,MsgText,sizeof(MsgText),MSG_DONTROUTE);
    }
    return 0;
}
//---------------------------------------------------------------------------


Автор: zim22 2.4.2009, 20:22
наберите в командной строке windows:
telnet localhost 3331

Автор: xvr 3.4.2009, 17:12
Функция accept блокирует выполнение программы пока на ее сокет не приконектится клиент

Автор: Ofer 6.4.2009, 10:22
Цитата(xvr @  3.4.2009,  17:12 Найти цитируемый пост)
Функция accept блокирует выполнение программы пока на ее сокет не приконектится клиент

Все правильно! Я не так понял справку...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)