Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > socket-дескриптор в file-дескриптор в windows?


Автор: jonie 22.10.2006, 13:13
имеется нечто типа
Код

........
s_socket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
.........тут проверки на ошибки + connect ..........
dataout=fdopen(s_socket, "w");      <=== валится с ASSERT в этой ф-ции
...................

на FreeBSD подобный код прокатывал (как и на *nix), на windows-же получаю вылет по 
Код

// fdopen.c

FILE * __cdecl _tfdopen (
        int filedes,
        REG2 const _TSCHAR *mode
        ){
............
VALIDATE_RETURN((filedes >= 0 && (unsigned)filedes < (unsigned)_nhandle), EBADF, NULL);  <==по этой проверке
.......
}

Использовал как VC++ 6.0, так и VS .NET 2005
-------
Вопросы как всегда ) кого бить и куда копать ?
//вариант написать свои заглушки типа  soc_fprintf(SOCKET s,const char* format,...) не предлагать  - так все могут)....

ЗЫ: инициализация WinSockets естественно проводится (WSAStartup), соеденение открывается, сокет не инвалидный ну и т.д. Проблема как раз в том что описал и не выше должна быть).

Автор: ptr 22.10.2006, 16:29
Цитата(jonie @  22.10.2006,  17:13 Найти цитируемый пост)
на FreeBSD подобный код прокатывал (как и на *nix), на windows-же получаю вылет по 

Windows -  не *nix smile  и такие штуки на нём не пройдут (MSDN):

Цитата

Winsock applications cannot assume that socket descriptors are equivalent to file descriptors as they are in UNIX.

The handles returned by socket() cannot be used with non-socket system calls like read(), fdopen(), etc. 


Цитата(jonie @  22.10.2006,  17:13 Найти цитируемый пост)
кого бить

Того, кто писал код smile .

Автор: Dude03 23.10.2006, 07:22
Хех, сам пробовал раз по молодости(не биологичекой, а программисткой) под Windows. Так не получится - FILE - внутренняя структура crt _iobuf. Socket в Windows - отдельный объект(Я про NT). А в никсе - что файл, что сокет - один хрен. 

Автор: jonie 25.10.2006, 21:13
ок. сам нашел в мсдн. ч.т.д.)) тема закрыта.

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