Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Ошибка в многопоточном серверном приложении...помогите разобраться!  (Прочитано 30083 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 18-11-2009 09:44 » 

дык...

Код:

1)
  BYTE buff[ 10];
  sizeof(buff)==10

2)
  BYTE* buff=new BYTE[ 10];
  sizeof(buff)==4


я не сразу увидел, что ты дописал пост. С чарами - тогда надо
::strlen(buff)+1  , чтоб терминатор тоже ушёл
« Последнее редактирование: 18-11-2009 11:05 от Алексей1153++ » Записан

sss
Специалист

ru
Offline Offline

« Ответ #31 : 18-11-2009 09:58 » 

Ага... Я просто наверное не дождусь ответа - есть ошибки в send у клиента или нет? Или же прием и вывод эха (неограниченного терминатором)  в cout может "сломать" его и он просто перестает отображать активность у клиента.

sizeof(buff)+1  - нельзя никак!
« Последнее редактирование: 18-11-2009 10:03 от sss » Записан

while (8==8)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 18-11-2009 11:05 » 

sizeof(buff)+1  - нельзя никак!

блин, это уже я на автомате написал ))) Для BYTE - sizeof()  , для char - ::strlen() .

то бишь, если
const char buff[ 10];
то длину передаём  ::strlen(buff)+1 .

А насчёт
Цитата
Ага... Я просто наверное не дождусь ответа - есть ошибки в send у клиента или нет?

может ошибок и нет: ведь он мог объявить статический массив, а сразу после него переменную, хотя бы один байт которой всегда равен 0 Улыбаюсь
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #33 : 18-11-2009 13:05 » 

LogRus, sizeof(buff) не смущает?

массив на стеке, чего смущаться?
Смущает(как ты уже написал) отсутствие заголовка говорящего о размере сообщения.

Код:
		send(my_sock, "Hallow, server!", sizeof("Hallow, server!"), 0); //передаем строку клиента серверу
нормальный код, строка передаётся с терминирующим нулём
« Последнее редактирование: 18-11-2009 13:08 от LogRus » Записан

Странно всё это....
sss
Специалист

ru
Offline Offline

« Ответ #34 : 19-11-2009 01:28 » new

Во блин... Точно, все нормально. Признаюсь - никогда так не использовал sizeof("XXXX")  и не видел (или не обращал внимание)!  Краснею
« Последнее редактирование: 19-11-2009 01:34 от sss » Записан

while (8==8)
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines