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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2010, 10:58   #1
MuxauJlo
 
Регистрация: 03.02.2010
Сообщений: 3
По умолчанию Сокеты С++, VS 2008 vs VS 6.0

Сервер был написан на 6.0
Потребовалась доработка, так как на вин 7 6.0 не работает( точнее запускается, даже билдит(работоспособность программы не проверял), но не работает дебагер), то было решено перекомпилить проект в 2008 студию.
Тут начались проблемы. Используются блокирующие сокеты. и если раньше recv висел до посинения(а точнее до очередного пакета от клиента), то в 2008 он отваливается спустя 2 минуты с ошибкой 100054. Ошибка то больно абстрактная: я точно знаю что клиент связь не разрывает и ему приходит сообщение о закрытии сокета.

Скорее всего дело в настройках, но в каких непонятно...

помогите пожалуйста.

протокол TCP/IP

использую обычные Вин Апи функции
если мало информации - спрашивайте.
MuxauJlo вне форума Ответить с цитированием
Старый 03.02.2010, 14:58   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Я так понял у вас ошибки сокетов не обрабатываются?
Какие сокеты используете WinSock или MFC?
MaTBeu вне форума Ответить с цитированием
Старый 03.02.2010, 16:26   #3
MuxauJlo
 
Регистрация: 03.02.2010
Сообщений: 3
По умолчанию

WinSock

причем в 6.0 все нормально, но не могу ей пользоваться по ряду причин.
MuxauJlo вне форума Ответить с цитированием
Старый 03.02.2010, 16:32   #4
MuxauJlo
 
Регистрация: 03.02.2010
Сообщений: 3
По умолчанию

еще, если делаю пинг от клиента раз в минуту, то ошибка не выскочит. Проверено - прога сутками гонялась. Но так как клиент подцепляется к инету через GPRS то это довольно таки накладно.

timeout.tv_sec=60*1000;
timeout.tv_usec=0;
if (setsockopt(ss,SOL_SOCKET, SO_SNDTIMEO, (const char*)&timeout, sizeof(timeout)) == -1)
{
AfxMessageBox("Cannot set parameters to socket");
}

пробовал задавать этот параметр вручную... результат нулевой.

Может я этот параметр не правильно задал? его в любом месте можно задавать? или только после определенных функций?
MuxauJlo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS SQL Server 2008 и Visual Studio 2008 C# (Как работать с БД?) cherw9!40k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 14.01.2010 20:51
Visual Studio Standard 2008 против Visual Studio Express 2008. Стоит ли покупать? Casper-SC Софт 4 31.12.2009 11:46
VISUAL STUDIO 2008 defaul language - как переключить в VISUAL STUDIO 2008 язык программирования, использ Эйнж Общие вопросы C/C++ 0 27.12.2009 20:39
Сокеты Pelengeist Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.11.2009 11:09
сокеты cross Работа с сетью в Delphi 2 21.12.2006 18:12