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 ?
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.