我一直在嘗試使用 python 的套接字庫。我為服務器和客戶端制作了一個簡單的程式,客戶端可以向服務器發送訊息。
這是我的服務器代碼:
import socket
print("Host")
socket_main = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_main.bind(('127.0.0.1', 9999))
socket_main.listen(1)
conn, addr = socket_main.accept()
while True:
data = conn.recv(1204).decode()
print(data)
conn.close()
這是我的客戶代碼
import socket
print("Client")
socket_main = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_main.connect(('127.0.0.1', 9999))
while True:
message = input(": ")
socket_main.send(message.encode())
socket_main.close()
當我在一臺計算機上的兩個不同終端上運行這些程式時,它作業得很好,但是當我嘗試在不同的計算機上運行服務器和客戶端時,我在客戶端端收到錯誤訊息,“無法建立連接,因為目標機器主動拒絕”。
我曾多次嘗試更改埠,但沒有幫助。我瀏覽了很多其他論壇,但我有一段時間無法解決這個問題,所以我決定在這里提問。
uj5u.com熱心網友回復:
當我嘗試在不同的計算機上運行服務器和客戶端時,客戶端出現錯誤
那是因為你127.0.0.1在兩邊都使用。那是本地主機環回IP地址。當客戶端和服務器在同一臺機器上時它可以作業,但它不能在 LAN 網路上路由。
你需要:
更改服務器以偵聽
0.0.0.0(偵聽所有已安裝的網路介面)或其實際 LAN IP 地址(僅連接到 LAN 的網路介面)。更改客戶端以連接到 LAN 上服務器的主機名或 IP 地址。
我已嘗試多次更改埠,但沒有幫助
問題出在埠上,但與 IP 地址有關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447343.html
