C#クライアント上のC ++サーバーから送信されたデータを受信します

バイウェンピン

C ++サーバーは次のような構造体をC#クライアントに送信します。

typedef struct {

    int cmd;             //commend of order
    int state;           //the state of communication
    int step;            //the step
    int dataLength;      //data length
    char data[DATA_SIZE];//data
} Message;

C#クライアントを使用して構造体受信し、メンバーとデータにアクセスしたいのですが、どうすればよいですか?

バイウェンピン

私はこの問題を解決しました、私はこのようにc#で構造体を定義します:

[StructLayout(LayoutKind.Sequential,Pack =1), Serializable]
    struct Message
    {
        public int cmd;
        public int state;
        public int step;
        public int dataLength;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string ip_segment;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] data;
    }

バイト配列を受け取ったら、次のようにメッセージに変換します。

public object BytesToStruct(byte[] bytes, Type type)
        {
            //get the size of Message
            int size = Marshal.SizeOf(type);

            if (size > bytes.Length)
            {

                return null;
            }
            //allocate Message object space
            IntPtr structPtr = Marshal.AllocHGlobal(size);
            //copy the byte array to the space
            Marshal.Copy(bytes, 0, structPtr, size);
            //convert byte array to struct Message
            object obj = Marshal.PtrToStructure(structPtr, type);
            //free the space
            Marshal.FreeHGlobal(structPtr);
            //return object
            return obj;
        }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#TCPサーバーは、Pythonクライアントから送信された2つのメッセージを同時に受信します

分類Dev

Nettyクライアントがサーバーから送信された完全なデータを受信していません

分類Dev

NodeJSサーバーのクライアントから受信したデータを印刷します

分類Dev

C#クライアントからサーバーへのデータ転送サーバーは以前のクライアントメッセージを受信しています非同期サーバー-非同期クライアント

分類Dev

エラー:HTMLページからサーバーにデータを送信し、サーバーからデータを受信します

分類Dev

サーバーソケットがクライアントから送信されたパケットを受信しないのはなぜですか

分類Dev

socket.ioサーバーに再接続した後、androidデバイスから送信されたイベントを受信しません

分類Dev

C#クライアントサーバー:1つのクライアントのみがデータを受信します

分類Dev

ソケットサーバーは、クライアントから送信されたメッセージを受信できませんでした

分類Dev

(BufferedReaderを使用する)サーバーがクライアントから送信されたすべてのデータを受信しないのはなぜですか?

分類Dev

LINQからデータを受信したのに、500の内部サーバーエラーを受信する

分類Dev

クライアントから送信されたデータを受信する方法

分類Dev

udpサーバーによって送信されたデータとクライアントによって受信されたデータの間の遅延を測定します

分類Dev

前の画面から送信されたデータを受信するSwiftui

分類Dev

SwiftのJsonのサーバーからデータを受信します

分類Dev

Java SUBクライアント(ZMQ)上のPython ZeroMQPUBサーバーからデータを受信する方法

分類Dev

C ++サーバーがクライアント/ Winsockからデータを受信できません

分類Dev

クライアントからSYNを受信した直後にサーバーがSYN / ACKを送信する

分類Dev

C#非同期ソケットサーバーはクライアントから1つのメッセージのみを受信します

分類Dev

支払いサイトから送信されたhttpsリンクからのデータの取得/受信/保存

分類Dev

クライアントとサーバー間のssh:サーバーはクライアントからサーバーに送信されたデータをどのように復号化しますか?

分類Dev

サーバーからの回答がreact-final-formで受信されるまで、送信ボタンを無効にします

分類Dev

サーバーからデータを受信し、Javaでデータを受信した場合にサーバーにデータを送信するプログラムの作成方法

分類Dev

サーバーに測定値を送信し、同時にセンサーからデータを受信するにはどうすればよいですか?

分類Dev

受信しているオブジェクトを表すパラメーターのタイプが宣言されている間に、サーバーから受信したJSON文字列を手動で解析する必要がありますか?

分類Dev

TCPソケットは、送信されたのと同じ方法でデータを受信しますか?

分類Dev

TCPソケットは、送信されたのと同じ方法でデータを受信しますか?

分類Dev

Golang UDPサーバーはローカルに送信されたパケットのみを受信します

分類Dev

サーバーがクライアントからシードしたよりも多くのデータを受信するのは奇妙です

Related 関連記事

  1. 1

    C#TCPサーバーは、Pythonクライアントから送信された2つのメッセージを同時に受信します

  2. 2

    Nettyクライアントがサーバーから送信された完全なデータを受信していません

  3. 3

    NodeJSサーバーのクライアントから受信したデータを印刷します

  4. 4

    C#クライアントからサーバーへのデータ転送サーバーは以前のクライアントメッセージを受信しています非同期サーバー-非同期クライアント

  5. 5

    エラー:HTMLページからサーバーにデータを送信し、サーバーからデータを受信します

  6. 6

    サーバーソケットがクライアントから送信されたパケットを受信しないのはなぜですか

  7. 7

    socket.ioサーバーに再接続した後、androidデバイスから送信されたイベントを受信しません

  8. 8

    C#クライアントサーバー:1つのクライアントのみがデータを受信します

  9. 9

    ソケットサーバーは、クライアントから送信されたメッセージを受信できませんでした

  10. 10

    (BufferedReaderを使用する)サーバーがクライアントから送信されたすべてのデータを受信しないのはなぜですか?

  11. 11

    LINQからデータを受信したのに、500の内部サーバーエラーを受信する

  12. 12

    クライアントから送信されたデータを受信する方法

  13. 13

    udpサーバーによって送信されたデータとクライアントによって受信されたデータの間の遅延を測定します

  14. 14

    前の画面から送信されたデータを受信するSwiftui

  15. 15

    SwiftのJsonのサーバーからデータを受信します

  16. 16

    Java SUBクライアント(ZMQ)上のPython ZeroMQPUBサーバーからデータを受信する方法

  17. 17

    C ++サーバーがクライアント/ Winsockからデータを受信できません

  18. 18

    クライアントからSYNを受信した直後にサーバーがSYN / ACKを送信する

  19. 19

    C#非同期ソケットサーバーはクライアントから1つのメッセージのみを受信します

  20. 20

    支払いサイトから送信されたhttpsリンクからのデータの取得/受信/保存

  21. 21

    クライアントとサーバー間のssh:サーバーはクライアントからサーバーに送信されたデータをどのように復号化しますか?

  22. 22

    サーバーからの回答がreact-final-formで受信されるまで、送信ボタンを無効にします

  23. 23

    サーバーからデータを受信し、Javaでデータを受信した場合にサーバーにデータを送信するプログラムの作成方法

  24. 24

    サーバーに測定値を送信し、同時にセンサーからデータを受信するにはどうすればよいですか?

  25. 25

    受信しているオブジェクトを表すパラメーターのタイプが宣言されている間に、サーバーから受信したJSON文字列を手動で解析する必要がありますか?

  26. 26

    TCPソケットは、送信されたのと同じ方法でデータを受信しますか?

  27. 27

    TCPソケットは、送信されたのと同じ方法でデータを受信しますか?

  28. 28

    Golang UDPサーバーはローカルに送信されたパケットのみを受信します

  29. 29

    サーバーがクライアントからシードしたよりも多くのデータを受信するのは奇妙です

ホットタグ

アーカイブ