한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › Masalah yang hanya dialami sebagian pemain

Bentrok port UDP tetap Two clients bound to the same local UDP port

ID penyebab pt-port-collision · Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika klien dibuat untuk memakai port lokal yang tetap, klien kedua di PC yang sama tidak bisa memakai port itu atau harus berbagi paket dengan klien pertama.

Mengapa Dua klien mencoba membuka port UDP lokal yang sama (dipaksa berbagi dengan opsi reuse) → Akibatnya OS hanya meneruskan paket masuk ke salah satu socket, atau tidak menjamin socket mana yang menerimanya. Router dan server juga melihat kedua klien sebagai alamat yang sama → Di layar Salah satu klien tidak menerima paket dunia game, sehingga NPC dan pemain lain tidak terlihat atau terjadi disconnect

Gejala
Tidak terlihat / objek hantu, Disconnect, Tidak bisa masuk / loading tanpa henti
Faktor
Packet loss
Siapa yang mengalami
Hanya satu klien di PC yang sama
Kapan
Tepat setelah login atau maintenance, Selalu
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Klien: biarkan OS memilih port lokal secara otomatis (bind ke port 0). Server: bedakan koneksi dengan token sesi yang diterbitkan untuk setiap koneksi.
Di grafik
Hanya sebagian yang tinggi · Jumlah paket yang diterima per klien
Yang diperiksa
Di PC pemain, dengan kedua klien menyala, jalankan netstat -ano -p udp di Command Prompt untuk melihat port UDP lokal yang dibuka setiap proses game (PID). Di sisi server, periksa apakah kedua sesi masuk dari IP publik dan port yang sama
Cocok jika
Kedua proses game terikat ke port lokal yang sama, atau di server kedua sesi terlihat dari IP dan port yang sama. Normal jika hanya satu klien yang dinyalakan
Tidak cocok jika
Kedua klien memakai port lokal yang berbeda, tetapi salah satunya tetap bermasalah: lebih mungkin bug pembedaan sesi berdasarkan IP atau perangkat, atau pembatasan multi-klien
Sarana pemeriksaan
Lingkungan pemain sendiri

Sumber

  1. Using SO_REUSEADDR and SO_EXCLUSIVEADDRUSE Microsoft
    Bind kedua ke port yang sama dengan SO_REUSEADDR merebut port itu, dan tidak bisa dipastikan socket mana yang menerima paket
  2. bind function (winsock.h) Microsoft
    Jika bind dilakukan ke port 0, port unik dialokasikan dari rentang port dinamis (49152–65535)
  3. netstat Microsoft
    -a menampilkan port TCP dan UDP, -n alamat dalam bentuk angka, -o ID proses (PID), dan -p udp hanya UDP

Lihat juga

Lapisan yang sama: Masalah yang hanya dialami sebagian pemain

Penyebab di lapisan lain dengan gejala yang sama (Tidak terlihat / objek hantu)

Lihat kartu interaktif dengan gambar dan simulasi