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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi, C#, Bytes 
:(
    Опции темы
uranpro
  Дата 21.1.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



добрый день!
Есть TCP сервер написан на Delphi, пытаюсь наладить клиента на C#. что-то не получается =(

delphi принимает структуру:
Код

  TUSCSMsg = packed record
    ProID:integer; // 4b
    Command: string[30]; //31b
    pFrom : string[30]; //31b
    Msg:string[255]; // 256b
    end;


на шарпе пишу
Код

            byte[] ToSend = new byte[322];

            Array.Copy(BitConverter.GetBytes((int)7), 0, ToSend, 0, 4);
            Array.Copy(Encoding.ASCII.GetBytes("Login"), 0, ToSend, 4, Encoding.ASCII.GetBytes("Login").Length);
            Array.Copy(Encoding.ASCII.GetBytes("User"), 0, ToSend, 35, Encoding.ASCII.GetBytes("User").Length);
            Array.Copy(Encoding.ASCII.GetBytes("Message"), 0, ToSend, 66, Encoding.ASCII.GetBytes("Message").Length);

            Client.Send(ToSend);


Delphi не может прочитать, что делать ? где-то ошибка ?


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Sfate
Дата 21.1.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

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



запись идет допустим с 4го по 35й байт... а потом начинается с 35го по 66й... т.е. мы 35й байт затираем, не так ли?

Это сообщение отредактировал(а) Sfate - 21.1.2010, 22:55
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
uranpro
Дата 22.1.2010, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



Sfate, да, но не помогает тоже =(


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Sfate
Дата 22.1.2010, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

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



uranpro, мы имеем массив... записываем к примеру логин из 4х байт т.е. запись идет с 4го по 8й... а остальные байты с 9го по 31й не содержат ничего... может в них лучше записать нули?
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
KelTron
Дата 22.1.2010, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(uranpro @  21.1.2010,  11:55 Найти цитируемый пост)
Delphi не может прочитать

Это ни о чём не говорит. Каким образом происходит чтение, что получается в результате?



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
uranpro
Дата 22.1.2010, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



Sfate, когда создаешь массив байт, элементы заполняются нулями.

Добавлено через 3 минуты и 52 секунды
KelTron, в результате делфи понимает только первые 4 байта.
delphi
Код

procedure xxx.ServerExecute(AThread: TIdPeerThread); // indy
var
  CommBlock: TUSCSMsg;
...
AThread.Connection.ReadBuffer (CommBlock, SizeOf (CommBlock));
...


Добавлено через 6 минут и 50 секунд
т.е. читает только ProID(int32), остальные поля пусты.


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
KelTron
Дата 23.1.2010, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(uranpro @  22.1.2010,  20:07 Найти цитируемый пост)
AThread.Connection.ReadBuffer (CommBlock, SizeOf (CommBlock));

Судя по этой строке, байтовый массив должен в точности соответствовать формату структуры в делфи.
Т.е. когда ты записываешь массив для отправки тебе надо преобразовать данные к такому же формату как в делфи.

Например, насколько я помню в делфях формат строки такой: 1-й элемент массива это длина строки, далее сама строка.
Тебе надо это учитывать, а сейчас ты просто пишешь саму строку в формате С#, который ессно отличается.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
uranpro
Дата 24.1.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



черт с ним, обновлю всех клиентов и поменяю порт сервера=)


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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