Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как коректно работать с CSocket? Ошибка 10093 
:(
    Опции темы
Free-lancer
  Дата 30.1.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Господа, сюжет такой: по MSDN для работы с Socket по средствам MFC необходимо построить связку CSocket - CSocketFile - CArchive и затем по средствам CArchive принимать/передавать данные. Но когда я пишу
Код

CSocket socket;
socket.Create(0,1,NULL); //Все по умолчанию

Возникает ошибка 10093: Either the application has not called WSAStartup, or WSAStartup failed. Но WSAStartup уже более низкоуровневая функция!
Как вот, как же все таки самым удобным и корректным способом инициализировать Socket?
PM MAIL   Вверх
AntonSaburov
Дата 30.1.2004, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата
Either the application has not called WSAStartup, or WSAStartup failed.

CSocket сам вызывает WSAStartup (без этого никак). Значит ее вызов закончился неудачно. А вот почему так - сложон сказать. Может dll для сокетов грохнули. Хотя это вряд ли. Или еще что. Сложно так сказать.

Т.е ты вызываешь все корректно. Разве что можно Create вызывать вообще без параметров - они тогда сами по умолчанию должны подставиться.

PM MAIL WWW ICQ   Вверх
Step
Дата 30.1.2004, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



AntonSaburov, а может в проекте вот этого не хватает AfxSocketInit()


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
AntonSaburov
Дата 30.1.2004, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата
AntonSaburov, а может в проекте вот этого не хватает AfxSocketInit()

Я честно сознаюсь, с CSocket не работал. Все больше на обычных сокетах. Так что вполне может быть, что это замечание верное. Спасибо, Step.
PM MAIL WWW ICQ   Вверх
Step
Дата 30.1.2004, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Free-lancer, попробуй вставить в инит инстанце вот это
Код
if (!AfxSocketInit())
{
 AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
 return FALSE;
}



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Free-lancer
Дата 30.1.2004, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо, Step. После вызова AfxSocketInit() все заработало. Только в таком виде код выдает ошибку! Я взял использование этой функции из MSDN:
Код
BOOL CMyApp::InitInstance()
{
 //Default Appwizard code.
 if(!AfxSocketInit())
   AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP);
 return CWinApp::InitInstance();
}

PM MAIL   Вверх
Step
Дата 30.1.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Free-lancer, этот код который ты привел, будет вставляться автоматически если ты пометишь чекбокс Windows sockets на закладке Advanced Features в аппликашион визарде


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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