Создание Серверного Сокета

Тема в разделе "C и С++ FAQ", создана пользователем sasha465, 11 апр 2012.

  1. sasha465

    sasha465 Well-Known Member

    Регистрация:
    29 мар 2009
    Сообщения:
    69
    Симпатии:
    0
    Помггите пожалуйста разобраться и найти ошибку при создании серверного сокета. Вообщем функция bind возвращает значение -1, то есть завершается с ошибкой вот собсно код:
    Код (C++):
           
    static struct sockaddr_in SrvAddr;
    struct sockaddr_in ConnectAddr;
    static SOCKET SrvSock, sockio;
    WSADATA wsa;
    WORD wVersion;
    ..............................

    wVersion=MAKEWORD(2,0);
    WSAStartup(wVersion,&wsa);
    SrvSock=socket(AF_INET,SOCK_STREAM,0);
    if (SrvSock == -1)
    MessageBox(hWnd,L"couldn't create a socket",L"message",MB_OK); // здесь ошибки не выдает
    memset ((char *)&SrvAddr, '\0', sizeof(SrvAddr));
    SrvAddr.sin_family=AF_INET;
    SrvAddr.sin_port=htons(1026);
    SrvAddr.sin_addr.S_un.S_addr=0;                                                     // если сюда вставить INADDR_ANY или htonl(INADDR_ANY) ничего не изменится
    if(bind(SrvSock,(sockaddr*) &SrvAddr, sizeof(SrvAddr)))
    MessageBox(hWnd,L"error",L"message",MB_OK);                       // а вот это сообщение об ошибки срабатывает
    listen(SrvSock,5);
    Addrlen=sizeof(ConnectAddr);
    sockio=accept(SrvSock, (SOCKADDR*) &ConnectAddr,&Addrlen);
    shutdown(sockio,2);
    closesocket(sockio);
    Вроде все должно быть элементарно, а не работает. Где же ошибка?
     
  2. rlib

    rlib New Member

    Регистрация:
    25 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Во-первых, кто мешает посмотреть ошибку, возвращаемую бинд(). Проверь точно, что не так.
    Во-вторых. причина может быть (1) имеется процесс, который уже бежит на выбраном тобой порту; попробую юзануть 63000 например, вместо 1026 (2) файрфол виндосовский блокирует твою апликацию - выруби его нафег.

     
Загрузка...

Поделиться этой страницей