Não é possível conectar-se ao servidor python na LAN

1

Então eu tenho este servidor python que apenas retorna a sentença em maiúscula que veio como uma entrada:

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)

Deste cliente:

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()

Tudo funciona como esperado em localhost , mas quando executo server.py em uma máquina e execuo client.py em outra máquina, o cliente não consegue entrar em contato com server.py .
Além disso, não consigo me conectar a server.py via telnet na mesma máquina em que server.py está sendo executado) Aqui está o traceback:

Connecting To 192.168.1.2...Could not open connection to the host, on port 12000: Connect failed 

Agora cheirei alguns pacotes usando o Wireshark e, surpreendentemente, o protocolo contra este pacote foi LLC em vez de UDP e o campo de dados era:

Data: 74:5f:32:20:61:6e:64:72:6f:69:64
[Length: 11]

Peço desculpas se a diferença é trivial, mas acabei de iniciar a programação de socket e isso está me incomodando.

    
por Jarwin 13.12.2015 / 20:49

1 resposta

2

Em primeiro lugar, SOCK_DGRAM é UDP , por isso você não poderá usar telnet porque é apenas TCP .

Os pacotes são UDP . Espero que wireshark esteja apenas confundindo-os com LLC devido à porta 12000 ( LLC é executado em cima de UDP , acredito).

Parece que isso não está funcionando porque você definiu serverName para .3 no script de cliente, mas o servidor está escutando .2 .

Eu também só vou ignorar o invólucro de camelo em Python;)

    
por 13.12.2015 / 21:05