0
林本地服務器上使用我的筆記本電腦下面的代碼作爲服務器:連接被拒絕來自外部的連接
WSADATA wsd = { 0 };
WSAStartup(MAKEWORD(2, 0), &wsd);
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN sin = { 0 };
sin.sin_family = AF_INET;
sin.sin_port = htons(15000);
sin.sin_addr.s_addr = inet_addr("0.0.0.0");
bind(s, (const sockaddr*)&sin, sizeof(sin));
listen(s, 10);
int len = sizeof(SOCKADDR_IN);
SOCKET a = accept(s, (sockaddr*)&sin, &len);
而下面的代碼運行在我的手機:
Socket s = new Socket();
try {
s.connect(new InetSocketAddress("*.*.*.*", 15000));
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
我用與我的公網IP中的另一臺計算機上的telnet一樣。可悲的是,我得到下面的異常消息:
failed to connect to /*.*.*.* (port 15000): connect failed: ECONNREFUSED (Connection refused)
好吧,我重新檢查我的路由器設置,IPCONFIG給我192.168.1.109我的筆記本電腦IP,你可以在下面的圖片中看到的端口轉發到IP:
當我再次確認我的防火牆已停用後,我終於啓動wireshark並檢查了端口15000.沒有任何傳入,沒有tcp數據包。所以很明顯,數據包沒有到我的電腦,並被拒絕較早(路由器?)
我有它的工作在前幾天(兩個星期上)在另一個端口,我託管我們正在爲我們的遊戲服務器。現在同樣的問題,不再工作。
這可能是導致所有傳入連接的拒絕?
是的,正如你可以在圖像中看到端口15000轉發到我的內部IP – Muepe
我會使用'sin.sin_addr.s_addr = INADDR_ANY;'雖然我懷疑這不是問題。 –
是的,對,我認爲它在C++中是不同的:D。我應該寫,我寫的客戶端和服務器在C++ /。NET/Java的,以確保其不會與編程語言的問題。 – Muepe