linux - Saya mempunyai beberapa soalan mengenai susunan bait soket.
我想大声告诉你
我想大声告诉你 2017-05-31 10:37:36
0
3
908

Saya sedang belajar tentang soket baru-baru ini dan mendapati bahawa jika saya menghantar permintaan, alamat IP dan nombor port yang diminta perlu ditukar kepada susunan bait rangkaian. Jika tidak, masalah penghuraian akan berlaku disebabkan oleh endian kecil dan endian besar

Tetapi mengapa data teks selepas soket diwujudkan tidak boleh diproses dalam susunan bait?

Sebagai contoh, apa yang saya hantar ialah rentetan Seperti yang kita sedia maklum, set aksara Unicode semasa adalah lebih daripada satu bait Jika terdapat berbilang bait, akan berlaku masalah rentetan ?

我想大声告诉你
我想大声告诉你

membalas semua(3)
为情所困

Soket hanya mengenali unit bait, dan bait yang ditulis dalam akan dibaca oleh hujung yang satu lagi dalam susunan yang sama.

Pengekodan Unikod sudah termasuk susunan bait Contohnya, jika anda menulis UTF16LE pada satu hujung, anda perlu menyahkod bait mengikut UTF16LE pada hujung yang lain (Kes khas: unit pengekodan UTF8 ialah satu bait, tiada bait masalah pesanan).

Jika anda menggunakan soket untuk menghantar data umum, anda mesti mempertimbangkan susunan bait Pertimbangan ini biasanya sebahagian daripada protokol bersiri.

大家讲道理

Endianness adalah untuk integer. Nombor port ialah integer 16-bit, jadi terdapat masalah endian. Semua yang lain tidak penting

滿天的星座

Oleh kerana TCP/UDP dan protokol rangkaian peringkat rendah yang lain ditetapkan dengan cara ini. Selepas soket ditubuhkan, data yang dihantar adalah bersamaan dengan protokol yang anda reka, jadi anda boleh menggunakan apa sahaja pesanan bait yang anda mahu, asalkan kedua-dua penghantar dan penerima menggunakan susunan bait yang sama.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan