Как отправить переменные / объекты в TCP Socket? - PullRequest
0 голосов
/ 22 февраля 2012

Как я могу отправлять переменные / объекты / данные из одной программы в другую в локальной сети с помощью TCP-сокета? В частности, я хочу отправить переменные, такие как TreeNode и ListViewItem. Как я могу это сделать? Как программа-отправитель преобразует переменную в форму, которую она может отправить другой программе в локальной сети? И как программа-получатель вернет отправленную переменную в исходную форму?

РЕДАКТИРОВАТЬ: нашел следующий код на веб-сайте, который больше не доступен, и попросил удалить ссылку.

        // Convert an object to a byte array
        private byte[] ObjectToByteArray(Object obj)
        {
            if (obj == null)
                return null;
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, obj);
            return ms.ToArray();
        }

        // Convert a byte array to an Object
        private Object ByteArrayToObject(byte[] arrBytes)
        {
            MemoryStream memStream = new MemoryStream();
            BinaryFormatter binForm = new BinaryFormatter();
            memStream.Write(arrBytes, 0, arrBytes.Length);
            memStream.Seek(0, SeekOrigin.Begin);
            Object obj = (Object)binForm.Deserialize(memStream);
            return obj;
        }

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Вы можете сериализовать данные в байтовый массив и затем отправить это? Программа получателя затем десериализовала бы данные на другом конце.

0 голосов
/ 24 февраля 2012

Это называется сериализацией, и существует много типов. Некоторые типы предпочитают определенные типы данных, некоторые типы предлагают более высокие скорости, чем коэффициенты сжатия, а некоторые типы предлагают более высокие коэффициенты сжатия, чем скорости.

JSON.NET, буферы протокола Google, YaxLib ... их много, выбирайте сами. Некоторые из них проще в использовании, чем другие. Я рекомендую JSON.NET, потому что для этого, возможно, есть больше онлайн-учебников, и они удобочитаемы во время отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...