Python
無法連接到 LAN 上的 python 伺服器
所以我有這個python伺服器,它只返回作為輸入的大寫句子:
from socket import * serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(('192.168.1.2', serverPort)) print "The server is ready to receive on port: {}".format(serverPort) while 1: message, clientAddress = serverSocket.recvfrom(2048) print clientAddress, message modifiedMessage = message.upper() serverSocket.sendto(modifiedMessage, clientAddress)
來自這個客戶:
from socket import * serverName = "192.168.1.3" serverPort = 12000 clientSocket = socket(AF_INET, SOCK_DGRAM) message = raw_input("Input lowercase sentence:") clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print modifiedMessage clientSocket.close()
一切都按預期工作,
localhost
但是當我在一台機器上執行並在另一台機器server.py
上執行client.py
時,客戶端無法聯繫server.py
。
此外,我什至無法在執行的同一台機器上連接到server.py
via )這是回溯:telnet``server.py
Connecting To 192.168.1.2...Could not open connection to the host, on port 12000: Connect failed
現在我使用 Wireshark 嗅探了一些數據包,令人驚訝的是,針對這個數據包的協議
LLC
不是,UDP
數據欄位是:Data: 74:5f:32:20:61:6e:64:72:6f:69:64 [Length: 11]
如果差異微不足道,我深表歉意,但我剛剛開始套接字程式,這讓我很煩惱。
首先,
SOCK_DGRAM
是UDP
這樣你將無法使用telnet
,因為它TCP
只是。數據包是
UDP
. 我希望這wireshark
只是LLC
因為埠而誤認為它們12000
(我相信LLC
在上面執行)。UDP
看起來這不起作用,因為您已在客戶端腳本中設置
serverName
為,但伺服器正在偵聽..3``.2
我也將忽略 Python 中的駱駝外殼;)