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
345 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!

sumber:php.cn
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