Jika Anda tidak dapat memprediksi jenis lingkungan yang tepat yang akan dijalankan oleh aplikasi Anda, jangan pedulikan hal ini. Pilih angka apa pun di atas 1024 dan buat juga dapat dikonfigurasi sehingga pengguna dapat mengubahnya jika terjadi konflik dengan layanan/aplikasi lain.
Tentu saja Anda masih dapat menghindari port yang sangat umum seperti 8080 (HTTP alternatif) atau 3128 (proxy seperti squid), 1666 (terpaksa), dll. Anda dapat memeriksa daftar lengkap port yang dikenal di sini, atau melihat /etc/services .
Jika Anda tidak peduli dengan nomor port, dan tidak keberatan nomor port berubah setiap kali program Anda dijalankan, cukup jangan ikat port sebelum mendengarkannya (atau ikat dengan port 0, jika Anda ingin mengikat alamat IP tertentu). Dalam kedua kasus tersebut, Anda memberi tahu OS untuk memilih port gratis untuk Anda.
Setelah Anda mulai mendengarkan, gunakan getsockname
untuk mengetahui port mana yang dipilih. Anda dapat menulisnya ke file, menampilkannya di layar, meminta anak mewarisinya melalui fork
, dll.
Untuk aplikasi statis, pertimbangkan untuk memeriksa /etc/services
untuk menemukan porta yang tidak akan bertabrakan dengan apa pun yang Anda gunakan dan tidak umum digunakan di tempat lain.
$ tail /etc/services
nimspooler 48001/udp # Nimbus Spooler
nimhub 48002/tcp # Nimbus Hub
nimhub 48002/udp # Nimbus Hub
nimgtw 48003/tcp # Nimbus Gateway
nimgtw 48003/udp # Nimbus Gateway
com-bardac-dw 48556/tcp # com-bardac-dw
com-bardac-dw 48556/udp # com-bardac-dw
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject