Saya mencoba menulis program server di C, menggunakan klien lain, saya mendapatkan kesalahan ini ketika saya mencoba menyambung melalui port 2080 misalnya.
connection refused
Apa yang menjadi penyebab kesalahan ini?
c
sockets
connection-refused
Zenet
sumber
sumber
ping
, downforeveryoneorjustme.com menunjukkan bahwa bukan hanya saya dan saya juga masih bisa mengaksesnya melalui FTP. Setelah beberapa menit, kesalahan teratasi.connect()
tergantung pada IP dan port tertentu yang siap digunakan.Jawaban:
Mungkin ada banyak alasan, tetapi yang paling umum adalah:
Port tidak terbuka di mesin tujuan.
Porta terbuka di mesin tujuan, tetapi simpanan koneksi yang tertunda sudah penuh.
Firewall antara klien dan server memblokir akses (juga periksa firewall lokal).
Setelah memeriksa firewall dan port terbuka, gunakan telnet untuk menyambung ke ip / port untuk menguji konektivitas. Ini menghilangkan potensi masalah dari aplikasi Anda.
sumber
Kesalahan berarti OS dari soket pendengar mengenali permintaan koneksi masuk tetapi memilih untuk menolaknya dengan sengaja.
Dengan asumsi firewall perantara tidak menghalangi, hanya ada dua alasan (yang saya ketahui) bagi OS untuk menolak permintaan koneksi masuk. Salah satu alasannya telah disebutkan beberapa kali - port pendengar yang dihubungkan tidak terbuka.
Ada alasan lain yang belum disebutkan - port pendengaran sebenarnya terbuka dan aktif digunakan, tetapi simpanan permintaan koneksi masuk antriannya telah mencapai maksimum sehingga tidak ada ruang yang tersedia untuk permintaan koneksi masuk untuk mengantri pada saat itu. saat. Kode server belum memanggil accept () cukup sering untuk menyelesaikan pembersihan slot yang tersedia untuk item antrian baru.
Tunggu beberapa saat dan coba koneksi lagi. Sayangnya, tidak ada cara untuk membedakan antara "port tidak terbuka sama sekali" dan "port terbuka tetapi sekarang terlalu sibuk". Keduanya menggunakan kode kesalahan umum yang sama.
sumber
Jika Anda mencoba membuka koneksi TCP ke host lain dan melihat kesalahan "Sambungan ditolak", itu artinya
RST sedikit pada paket TCP yang menunjukkan bahwa koneksi harus diatur ulang. Biasanya ini berarti bahwa host lain telah menerima upaya koneksi Anda dan secara aktif menolak koneksi TCP Anda, tetapi terkadang firewall yang mengintervensi dapat memblokir paket TCP SYN Anda dan mengirim TCP RST kembali kepada Anda.
Lihat https://tools.ietf.org/html/rfc793 halaman 69:
sumber
Sambungan ditolak berarti port yang Anda coba sambungkan tidak benar-benar terbuka.
Jadi, Anda bisa menghubungkan ke alamat IP yang salah, atau ke port yang salah, atau server mendengarkan di port yang salah, atau tidak benar-benar berjalan.
Kesalahan umum tidak menentukan nomor port saat mengikat atau menghubungkan dalam urutan byte jaringan ...
sumber
Periksa di sisi server bahwa ia sedang mendengarkan di port 2080. Pertama coba konfirmasikan di mesin server dengan menerbitkan telnet ke port itu:
telnet localhost 2080
Jika mendengarkan, ia mampu merespons.
sumber
1. Periksa status server Anda.
2. Periksa status port.
Misalnya 3306
netstat -nupl|grep 3306
.3. Periksa firewall Anda. Misalnya tambahkan 3306
sumber
Meskipun tampaknya tidak demikian untuk situasi Anda, terkadang kesalahan koneksi menolak juga dapat menunjukkan bahwa ada konflik alamat ip di jaringan Anda. Anda dapat mencari kemungkinan konflik ip dengan menjalankan:
dan
Pertanyaan AskUbuntu ini juga memiliki beberapa informasi lebih lanjut.
sumber
Dari sudut pandang firewall Checkpoint, Anda akan melihat pesan dari firewall jika Anda benar-benar memilih Tolak sebagai Tindakan, sehingga penyerang dapat mengekspos keberadaan firewall di depan server. Firewall akan menghentikan semua koneksi yang tidak sesuai dengan kebijakan secara diam-diam. Sambungan ditolak hampir selalu berasal dari server
sumber
Saya mendapatkan masalah yang sama dengan komputer kerja saya. Masalahnya adalah ketika Anda memasukkan localhost, itu masuk ke alamat proxy bukan alamat lokal Anda harus melewati itu ikuti langkah-langkah ini
Chrome => Pengaturan => Ubah pengaturan proxy => Pengaturan LAN => centang Bypass server proxy untuk alamat lokal.
sumber
Di Ubuntu, Coba
sudo ufw allow <port_number>
izinkan akses firewall ke server dan db Anda.sumber
Coba berikan parameter port "-p":
sumber
Dalam kasus saya, ini terjadi ketika situs diblokir di negara saya dan saya tidak menggunakan VPN. Misalnya ketika saya mencoba mengakses vimeo.com dari Indonesia yang diblokir.
sumber
Saya memiliki pesan yang sama dengan penyebab yang sama sekali berbeda:
wsock32.dll
tidak ditemukan. The::socket(PF_INET, SOCK_STREAM, 0);
panggilan terus kembali sebuahINVALID_SOCKET
tapi alasannya adalah bahwa winsock dll tidak dimuat.Pada akhirnya saya meluncurkan monitor proses Sysinternals dan memperhatikan bahwa ia mencari dll 'di mana-mana' tetapi tidak menemukannya.
Kegagalan diam-diam itu bagus!
sumber