Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> socket-дескриптор в file-дескриптор в windows? как бы сделать SOCKET<->FILE* 
V
    Опции темы
jonie
Дата 22.10.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



имеется нечто типа
Код

........
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), соеденение открывается, сокет не инвалидный ну и т.д. Проблема как раз в том что описал и не выше должна быть).



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ptr
Дата 22.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Цитата(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 .

Это сообщение отредактировал(а) ptr - 23.10.2006, 04:59


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Dude03
Дата 23.10.2006, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.4.2006

Репутация: нет
Всего: 6



Хех, сам пробовал раз по молодости(не биологичекой, а программисткой) под Windows. Так не получится - FILE - внутренняя структура crt _iobuf. Socket в Windows - отдельный объект(Я про NT). А в никсе - что файл, что сокет - один хрен. 
PM MAIL   Вверх
jonie
Дата 25.10.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



ок. сам нашел в мсдн. ч.т.д.)) тема закрыта.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.