2016-08-15 3 views
0

파이썬을 사용하여 랩톱에서 소켓 통신을 테스트하려고합니다. 그러나 왜 연결이 설정되지 않았는지 잘 모르겠습니다. 대상 컴퓨터가 연결을 적극적으로 거부하고 있다는 오류가 계속 발생합니다. 동일한 컴퓨터를 사용하여 클라이언트와 서버 부분을 모두 실행하려고합니다. 서버는 잘 돌아가고 있지만 클라이언트는 연결하지 않습니다. 내가 호스트 이름을 잘못 (127.0.0.1) 가지고 있다고 생각하지만, 사용하고있는 Im이 무엇인지 확실하지 않습니까? 나는 또한 서버 호스트 이름을 (0.0.0.0)으로 변경하려고 시도했다. 그리고 클라이언트가 연결할 호스트 이름에 대한 IPV4 주소를 시도했지만 그 중 하나도 작동하지 않았다. 어떤 도움을 주시면 감사하겠습니다!동일한 컴퓨터에 클라이언트 - 서버 테스트

내 코드 (서버 부분) :

import socket 

comms_socket =socket.socket() 
comms_socket.bind(('127.0.0.1', 50000)) 
comms_socket.listen(10) 
connection, address = comms_socket.accept() 

while True: 
    print(connection.recv(4096).decode("UTF-8")) 
    send_data = input("Reply: ") 
    connection.send(bytes(send_data, "UTF-8")) 

클라이언트 부분 :

import socket 

comms_socket = socket.socket() 
comms_socket.connect(('127.0.0.1',50000)) 

while True: 

    send_data = input("Message: ") 
    comms_socket.send(bytes(send_data, "UTF-8")) 
    print(comms_socket.recv(4096).decode("UTF-8")) 
+0

문제점을 재현 할 수 없다면 코드가 내 컴퓨터에서 정상적으로 작동합니다. (윈도우 7, 파이썬 3.5). 코드가 소켓을 열지 못하게하는 방화벽이 설치되어 있는지 확인하십시오. 또한, 당신은 이것을 실행하고있는 운영 체제가 무엇입니까? –

+0

이 코드는 나를 위해 잘 작동합니다. BTW, 일반적인 패턴은 서버가 파이썬에서 빈 문자열 (' ""')로 표시되는 모든 주소 ('INADDR_ANY')를 수신하도록하는 것입니다. 그런 다음 localhost 인터페이스 ('127.0.0.1') 나 IP 주소를 가진 다른 인터페이스를 통해 메시지를받습니다. 클라이언트는 항상'connect'에 명시 적 주소를 제공해야합니다. –

+0

윈도우 10, 파이썬 3.5를 사용하고 있습니다. 파이썬 셸에서 실행할 때 문제가 발생하는 것은 IDLE이라고 생각합니다. 직접 실행하면 프로그램이 작동합니다. 도와 주셔서 감사합니다 –

답변

0

input()에 때문에 차이, 파이썬 2. * 작동하지 않습니다 귀하의 코드, raw_input(), bytes , 등등. * vs 파이썬 2. *. 파이썬 2.에서 작동하려면 최소한 다음과 같이 변경해야합니다. *.

서버 프로그램 :

import socket 

comms_socket =socket.socket() 
comms_socket.bind(('127.0.0.1', 7000)) 
comms_socket.listen(10) 
connection, address = comms_socket.accept() 

while True: 
    print(connection.recv(4096).decode("UTF-8")) 
    send_data = raw_input("Reply: ") # Use raw_input() instead of input() 
    connection.send(send_data.encode("UTF-8")) 

클라이언트 프로그램은 : 당신이 당신의 특정 유스 케이스에 의도 한대로 bytes을 사용하려면

import socket 


comms_socket = socket.socket() 
comms_socket.connect(('127.0.0.1',7000)) 

while True: 

    send_data = raw_input("Message: ") 
    comms_socket.send(send_data.encode("UTF-8")) 
    print(comms_socket.recv(4096).decode("UTF-8")) 

, 사용한다 그렇지 않으면 코드를 실행하는 파이썬 3를 사용 파이썬 2.6 이상에서 대신 bytesarray. 다음을 확인하십시오 : the bytes type in python 2.7 and PEP-358

+0

메신저를 사용하여 파이썬 3, 나는 원래 그들을 실행하는 비단뱀 쉘을 사용했지만 작동하지 않았다. 그러나, 나는 그들을 똑바로 돌릴 때, 그들은 일한다. 유휴 상태일까요? –