• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы sasha465
  • Дата начала
S

sasha465

Помггите пожалуйста разобраться и найти ошибку при создании серверного сокета. Вообщем функция 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);

Вроде все должно быть элементарно, а не работает. Где же ошибка?
 
R

rlib

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

Помггите пожалуйста разобраться и найти ошибку при создании серверного сокета. Вообщем функция 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);

Вроде все должно быть элементарно, а не работает. Где же ошибка?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!