Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahserialisasikan Struktur yang Diterima Melalui TCP dengan betul dalam C# dan Elakkan SafeArrayTypeMismatchException?

Bagaimana untuk Menyahserialisasikan Struktur yang Diterima Melalui TCP dengan betul dalam C# dan Elakkan SafeArrayTypeMismatchException?

Patricia Arquette
Lepaskan: 2024-12-31 03:41:13
asal
358 orang telah melayarinya

How to Correctly Deserialize a Struct Received Over TCP in C# and Avoid SafeArrayTypeMismatchException?

Struktur Deserialisasi Diterima Melalui TCP dalam C#

Masalah:

Apabila menghantar struct bersiri , RemuseNetworkPacket, melalui TCP, penyahserikatan pada mesin yang berasingan menghasilkan a SafeArrayTypeMismatchException. Format awalan panjang ialah l=xxxx;;, dengan xxxx mewakili panjang paket.

Penyelesaian:

Isu timbul daripada awalan panjang dikendalikan sebagai rentetan bukannya integer. Awalan panjang hendaklah dilaksanakan dengan betul:

  1. Tukar panjang paket kepada bait: Tukar panjang data paket (tidak termasuk awalan panjang dan pengepala) kepada tatasusunan bait. Ini biasanya akan menghasilkan 4 bait.
  2. Tambah awalan panjang dan pengepala: Gabungkan tatasusunan bait panjang dengan pengepala data paket dan data paket sebenar.
  3. Struktur paket: Struktur paket yang terhasil hendaklah: [Length (4 bait)][Header (1 bait)][Data (x bait)].

Menerima dan Menyahsiri:

  1. Panjang baca: Baca 4 bait pertama (panjang) dan tukarkannya kepada a integer.
  2. Baca pengepala: Baca bait seterusnya (pengepala).
  3. Baca data: Baca x bait (di mana x ialah panjang yang diperolehi dalam langkah 1) ke dalam tatasusunan bait.
  4. Deserialisasi paket: Gunakan pengepala dari langkah 2 untuk menentukan kaedah penyahserikatan yang sesuai dan gunakannya pada tatasusunan bait dari langkah 3.

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan Struktur yang Diterima Melalui TCP dengan betul dalam C# dan Elakkan SafeArrayTypeMismatchException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan