socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: Anthony  
Дата: 11.04.02 11:56
Оценка:
Народ!

Подскажите, pls, где грабли?
Написана программулина, которая по винсокету отправляет сообщения. Используется для этих целей TCP и UDP. Откомпилирована в BC++ 5.0 по Win2k SP2. Под 2k работает без проблем. Как только запускаю под Win98se сразу возникает ошибка WSAEAFNOSUPPORT при попытке создания сокета. Сокет создается следующим образом:

SOCKET m_s = socket(AF_INET, iProtocol, 0)

где iProtocol принимает значения SOCK_DGRAM или SOCK_STREAM.

В чем дело — не пойму...
Re: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: SergH Россия  
Дата: 11.04.02 12:11
Оценка:
Здравствуйте Anthony, Вы писали:

A>Народ!


A>Подскажите, pls, где грабли?

A>Написана программулина, которая по винсокету отправляет сообщения. Используется для этих целей TCP и UDP. Откомпилирована в BC++ 5.0 по Win2k SP2. Под 2k работает без проблем. Как только запускаю под Win98se сразу возникает ошибка WSAEAFNOSUPPORT при попытке создания сокета. Сокет создается следующим образом:

A>SOCKET m_s = socket(AF_INET, iProtocol, 0)


A>где iProtocol принимает значения SOCK_DGRAM или SOCK_STREAM.


A>В чем дело — не пойму...


Это странно. Судя по MSDN такая ошибка возвращается, если не поддерживается протокол. Может у тебя TCP/IP не установлен/отключен/ещё что-то страшное?
Делай что должно, и будь что будет
Re[2]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: Anthony  
Дата: 11.04.02 12:23
Оценка:
Здравствуйте SergH, Вы писали:

SH>Это странно. Судя по MSDN такая ошибка возвращается, если не поддерживается протокол. Может у тебя TCP/IP не установлен/отключен/ещё что-то страшное?


Да, нет протокол установле (сеть работает)...
Re[3]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: SergH Россия  
Дата: 11.04.02 12:37
Оценка:
Здравствуйте Anthony, Вы писали:

A>Да, нет протокол установле (сеть работает)...


Сеть может работать и без TCP. На NetBEUI каком-нибудь. Но обычно, конечно, на TCP.

Попробуй запустить такую программку:

void main()
{
if (WSAStartup(...)!=0) // не помню, какие параметры
{
    printf("WSAStartup error %d", WSAGetLastError());
    return;
}

SOCKET s = socket(AF_INET, SOCK_STREAM, 0);

if (INVALID_SOCKET == s)
{
    printf("socket error %d", WSAGetLastError());
}
else
{
    printf("socket success");
    closesocket(s);
}
WSAClose();
}


Если даже в таком виде завалится, я не знаю, что делать.
Делай что должно, и будь что будет
Re[4]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: Anthony  
Дата: 11.04.02 13:17
Оценка:
Здравствуйте SergH, Вы писали:

Думаю, что ошибка не в коде, поскольку у меня он выглядит очень похоже.... Думаю проблема связана с компиляцей/линкованием. Почему я так думаю? Потому что, кроме всего прочего функция FormatMessage тоже работает неправильно (выдает какой-то бред, а не текстовую информацию об ошибке)... Какие есть мысли?
Re[5]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: Алекс Россия http://wise-orm.com
Дата: 12.04.02 04:32
Оценка:
Здравствуйте Anthony, Вы писали:

A>Здравствуйте SergH, Вы писали:


A>Думаю, что ошибка не в коде, поскольку у меня он выглядит очень похоже.... Думаю проблема связана с компиляцей/линкованием. Почему я так думаю? Потому что, кроме всего прочего функция FormatMessage тоже работает неправильно (выдает какой-то бред, а не текстовую информацию об ошибке)... Какие есть мысли?


Есть!
ИМХО, FormatMessage не может выдовать сообщения для ошибок библиотеки WinSock! :-Или лучше вообще приведи-ка лучше проблемный код.
Re[6]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: SergH Россия  
Дата: 12.04.02 04:49
Оценка:
Здравствуйте Алекс, Вы писали:

A>ИМХО, FormatMessage не может выдовать сообщения для ошибок библиотеки WinSock! :-Или лучше вообще приведи-ка лучше проблемный код.


Под Win XP может, причем для этого ничего особенного делать не надо.
Делай что должно, и будь что будет
Re[6]: socket - в 98ом вызывает ошибку WSAEAFNOSUPPORT
От: Anthony  
Дата: 12.04.02 06:13
Оценка:
Здравствуйте Алекс, Вы писали:

А>Есть!

А>ИМХО, FormatMessage не может выдовать сообщения для ошибок библиотеки WinSock! :-Или лучше вообще приведи-ка лучше проблемный код.

Под 2k она почему то работет без проблем! А код, как я сказал, совершенно не проблемный и выглядит почти также как и тот, который ты привел... Повторяю: под 2к код работает на ура, под 98ым не может даже создать сокет. Такое впечатление, что функции socket(...) скармливаются совершенно не те параметры, хотя дебаггил перед вызовом функции — параметры правильные. Загадка, короче! Да, кстати, переды вызовом функции проверял на наличие установленного протокола (EnumProtocols) — все верно — протокол наличиствует! Все равно tnx за поддержку!

Anthony.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.