Назад | Перейти на главную страницу

Не удается подключиться к серверу 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 через 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;)