我制作了一個服務器/客戶端程式,當我在同一網路或同一臺機器上建立連接時一切正常。然而,這是我的問題:當我斷開客戶端計算機與本地網路的連接并將其連接到另一個網路(wifi)時,它不會連接到服務器。
這是我的服務器的一部分:
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
res = getaddrinfo(NULL, PORT, &hints, &result);
客戶:
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
res = getaddrinfo(SERVER_HOST, PORT, &hints, &result);
我的客戶端代碼中的目標埠與我的服務器中的埠相同。我在某處讀到我必須購買一個唯一的 IP 地址?所以我的問題是:如何使用 C (WinSock) 中的套接字連接不同網路上的兩臺計算機?
uj5u.com熱心網友回復:
好的,我發現我需要在路由器上進行埠轉發。剛剛聯系了我的網路提供商,因為我沒有選擇制定新的“埠轉發規則”。我在路由器配置中制定了新規則。我將我的私有(內部)IP 地址與我在服務器/客戶端程式中使用的埠號一起放入新規則中。這是一個很好的資源。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435890.html
上一篇:按特定鍵值對多維陣列進行排序
下一篇:Winsocksendto在網路配接器被禁用或物理斷開后回傳廣播地址的錯誤10049(WSAEADDRNOTAVAIL)
