Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 17:31   #1
sasha465
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 10
По умолчанию Создание серверного сокета

Помогите пожалуйста разобраться и найти ошибку при создании серверного сокета. Вообщем функция bind возвращает значение -1, то есть завершается с ошибкой вот собсно код:

Код:
  
    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);
Вроде все должно быть элементарно, а не работает. Где же ошибка?

Последний раз редактировалось rpy3uH; 11.04.2012 в 17:42.
sasha465 вне форума Ответить с цитированием
Старый 11.04.2012, 17:44   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

попробуй вот так
bind(SrvSock,(sockaddr*) &SrvAddr, sizeof(SOCKADDR_IN))
rpy3uH вне форума Ответить с цитированием
Старый 11.04.2012, 18:06   #3
sasha465
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
попробуй вот так
bind(SrvSock,(sockaddr*) &SrvAddr, sizeof(SOCKADDR_IN))
Попробовал, не помогло.
sasha465 вне форума Ответить с цитированием
Старый 11.04.2012, 18:16   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

вызови функцию WSAGetLastError и сразу всё станет понятно
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация клиент-серверного приложения ror13 C/C++ Сетевое программирование 7 04.07.2011 16:04
Разработка клиент-серверного приложения Sabber БД в Delphi 0 19.05.2010 12:25
Разработка клиент-серверного приложения на PHP IlyaGT Помощь студентам 1 09.04.2009 10:18
Разработка клиент - серверного приложения Spyer Работа с сетью в Delphi 5 16.01.2008 15:46