|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.07.2014, 15:17 | #1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Клиент не получает данные с сервера
Здравствуйте.
Есть 2 клиента и сервер, всё запускаю на одном компе. Клиентами авторизируюсь, обмениваюсь данными между двумя клиентами с помощью сервера и начинается загрузка графики, которая длится около минуты. После загрузки графики бывают проблемы. Бывает что один или сразу оба клиента не получают данные отправленные сервером, а бывает что всё работает как надо. То есть, графика загрузилась и сервер начинает каждые 5 секунд слать данные обоим клиентам, клиент ВАРИАНТ1 либо вообще (по непонятной мне причине) не получает ни одного сообщения с сервера, ВАРИАНТ2 либо получает всё (работает как надо) что отправляет сервер. С сервера данные отправляются. Подскажите пожалуйста, как можно выяснить в чём проблема? Что проверить? Уже целый день мучаюсь, не могу понять в чём дело. Ожидание ответа от сервера у меня происходит в отдельном потоке Код:
Спасибо за внимание. Последний раз редактировалось gunsoy; 05.07.2014 в 15:19. |
05.07.2014, 15:59 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
05.07.2014, 17:02 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А где здесь цикл вообще?
Если зависает внутри SDLNet_TCP_Recv() то это значит, что на этот сокет не приходят данные, т.е. их никто не посылает. |
05.07.2014, 17:20 | #4 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
А где здесь цикл вообще?
Да, у меня это делается в цикле. Если зависает внутри SDLNet_TCP_Recv() то это значит, что на этот сокет не приходят данные, т.е. их никто не посылает. Да, данные не приходят, но сервер их посылает, проверял. Как бы выяснить в чём проблема? Мне в голову ничего не приходит. Какая-то странная проблема=( То работает, то не работает. В основном один из двух клиентов данные не принимает в 50% случаев. В 25% не принимают данные оба клиента и в 25% принимают данные оба клиента. |
05.07.2014, 19:36 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
05.07.2014, 21:30 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А как вы проверяли, что сервер их посылал?
|
05.07.2014, 21:45 | #7 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
А как вы проверяли, что сервер их посылал?
Сделал вывод std::cout на сервере, примерно так for(int i = 0; i < UserCol; i++) { resultSend = send(usersock[i].....); if(resultSend) { std::cout << "\nTrue " << i; } } Сервер возвращал труе 0 и труе 1, а один из клиентов данные не получал. Скачал сниффер, попробую с ним. Осталось только разобраться как с ним работать. |
06.07.2014, 10:19 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
а что напечатает ваша проверка, если send вернет -1?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Клиент запрашивает список файлов в текущем каталоге сервера | canela | Помощь студентам | 0 | 04.06.2013 13:00 |
Передача произвольного потока с сервера на клиент datasnap | galamay-evg | Помощь студентам | 0 | 15.02.2011 13:43 |
Как перехватить данные, которые отправляет на сервер и получает от него? | losticsx | Помощь студентам | 2 | 21.08.2010 18:23 |
клиент не получает сообщение(winsock) | NiCola999 | C/C++ Сетевое программирование | 4 | 21.07.2010 12:08 |
обновление в блоге - Создание клиент-сервера | Pblog | Обсуждение статей | 0 | 03.10.2007 17:12 |