Send struct from socket - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста отправить структуру на ++...
typedef struct
{
    unsigned int size;              
    unsigned int cmd;               
    unsigned int type;              
    unsigned char idlen;            
    unsigned char id[1];            
} TInitialRequest, *PInitialRequest;
Делал так но не работает на другой стороне сервера...
        
        static byte[] ObjectToByteArray(object obj)
        {
            if (obj == null)
                return null;
 
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, obj);
            return ms.ToArray();
        }

[Serializable]
        struct TInitialRequest
        {
            public uint size; 
            public uint cmd; 
            public uint type; 
            public byte idlen; 
            public byte[] id;
        }
 
// main
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Connect("127.0.0.1", 2288);
 
            string name = "Test";
 
            TInitialRequest req = new TInitialRequest();
            req.size = 0;
            req.cmd = 9;
            req.id = Encoding.Default.GetBytes(name.ToCharArray());
            req.idlen = Convert.ToByte(name.Length);
            req.type = 18;
            s.Send(ObjectToByteArray(req));
Даже не знаю правильно ли перевел структуру с ++..

Решение задачи: «Send struct from socket»

textual
Листинг программы
req.id = Encoding.UTF8.GetBytes(name); // или ASCII

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5