![]() |
|
Модераторы: feodorv |
![]()
|
|
| ezekil |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.4.2012 Репутация: нет Всего: нет |
Подскажите пожалуйста как передать через TClientSocket стринговую переменную через SendBuf.
Отправляю так:
Принимаю так:
В итоге с клиента отправляется всё как надо, а приходит на сервер NULL. |
||||
|
|||||
| disputant |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: нет Всего: 3 |
Говорю сразу - как выглядит класс String, не знаю - это явно не стандарт C++, но на 99.9% уверен, что проблема в SizeOf(a) (опять же, что именно возвращает эта функция - не уверен, но явно в String просто так буфер для размещения данных по умолчанию не выделен... |
||||
|
|||||
| ezekil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.4.2012 Репутация: нет Всего: нет |
Может для этого использовать char? Но с ним тоже ничего не выходит :(
|
|||
|
||||
| disputant |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: нет Всего: 3 |
Смотря как использовать
что-то в этом духе делаете? Да и вы уверены, что отправляется именно строка? (Еще раз - я используемую вами библиотеку не знаю, в стандарт она не входит, так что ничего уверенно сказать не могу...) Как вы это проверяете? Это сообщение отредактировал(а) disputant - 24.4.2012, 18:19 |
||||
|
|||||
| ezekil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.4.2012 Репутация: нет Всего: нет |
Да да делаю что-то вроде того. Проверяю в отладчике.
А что если использовать Winsock? Там будет подобная пролема или там всё нормально передаётся? |
|||
|
||||
| disputant |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: нет Всего: 3 |
Ну, я давно написал для себя соответствующий класс и с низким уровнем напрямую давно дела не имел Но вызов примерно
вполне работающий. Только вы уверены, что у вас отправка работает правильно? |
||||
|
|||||
| alexvs11 |
|
||||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 1 Всего: 10 |
этот String выглядит скорее всего отдаленно так
те по сокету вы радостно передаете структуру с указателем из совершенно другого процесса это я про то, почему у такого хода не было шансов то что вы пытались делать называется сериализация (и десериализация) и выглядеть он должна точно не так Это сообщение отредактировал(а) alexvs11 - 24.4.2012, 22:09 |
||||
|
|||||
| ezekil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.4.2012 Репутация: нет Всего: нет |
||||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
// Отправка
String a; a = "qwerty"; int myLength = a.Length(); ClientSocket1->Socket->SendBuf(&myLength, sizeof(int)); ClientSocket1->Socket->SendBuf( a.c_str(), myLength ); // Прием int tmp_Length; ServerSocket1->Socket->RecieveBuf(&tmp_Length, sizeof(int)); char *tmp_string = new char[tmp_Length]; ServerSocket1->Socket->RecieveBuf(tmp_string, tmp_Length); String A; A = tmp_string; delete [] tmp_string; ShowMessage (A); |
|||
|
||||
| ezekil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.4.2012 Репутация: нет Всего: нет |
SVN74, спасибо большое! Это именно то, что нужно
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |