Jestem nowy w Sockets, proszę wybaczyć mój kompletny brak zrozumienia.Dlaczego otrzymuję komunikat "Odmowa połączenia" w Pythonie? (Gniazda)
Mam skrypt serwera (server.py):
#!/usr/bin/python
import socket #import the socket module
s = socket.socket() #Create a socket object
host = socket.gethostname() #Get the local machine name
port = 12397 # Reserve a port for your service
s.bind((host,port)) #Bind to the port
s.listen(5) #Wait for the client connection
while True:
c,addr = s.accept() #Establish a connection with the client
print "Got connection from", addr
c.send("Thank you for connecting!")
c.close()
i skrypt klienta (client.py):
#!/usr/bin/python
import socket #import socket module
s = socket.socket() #create a socket object
host = '192.168.1.94' #Host i.p
port = 12397 #Reserve a port for your service
s.connect((host,port))
print s.recv(1024)
s.close
idę do mojego terminalu stacjonarnym i uruchomić skrypt wpisując :
python server.py
po czym idę do terminala przenośnego i uruchomić skrypt klienta:
python client.py
ale pojawia się następujący błąd:
File "client.py", line 9, in
s.connect((host,port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
Próbowałem została, używając różnych numerów portów bezskutecznie. Jednak udało mi się uzyskać nazwę hosta za pomocą tej samej metody ip i gethostname() w skrypcie klienta i mogę pingować pulpit (serwer).
Użyj [] (http://en.wikipedia.org/wiki/ telnet Telnet). Często pomaga mi. Wpisz swój terminal 'telnet [IP] 12397' (zastąp IP tym, co zwraca' gethostname() '). Jeśli to zrobisz, powinieneś zobaczyć "Dziękuję za połączenie". Jeśli nie, pokaż mi, co zwróciło telnet. – Matt3o12
'telnet' działa dla mnie, ale każde polecenie wysyłam tworzy' HTTP/1.1 400 Bad Request' i zamyka połączenie. –