2014-03-19 1 views
1

이더넷 케이블을 사용하여 라스베리 파이에서 내 랩톱으로 데이터 (센서 판독 값)를 보내려고합니다. 단순히 두 시스템을 성공적으로 연결하려고 시도합니다.Python 클라이언트/서버 코드 - 이더넷을 통해 두 대의 컴퓨터를 연결할 수 없습니다.

나는 client.py 코드와 server.py 코드를 만들었습니다. 서버가 Pi에서 실행 중이며 클라이언트가 내 랩톱에서 실행 중입니다. 또한 Rasperry Pi (192.168.0.17)에 고정 IP 주소를 설정했습니다. 랩톱에서 IPCONFIG를 실행하면 랩톱의 이더넷 IP 주소는 192.168.0.16입니다.

라즈베리 파이 (고정 IP 대신 '로컬 호스트'사용)에서 서버와 클라이언트 코드를 모두 실행하면 연결이 성공하고 데이터를 보낼 수 있지만 랩톱을 사용하여 랩톱과 통신하려고 할 때 Pi의 고정 IP 주소와 랩톱의 클라이언트 코드에있는 고정 IP 주소가 같으면 서버는 랩톱에서 연결을 수신하지 못하지만 랩톱 시간 초과의 클라이언트 코드는 다음 오류와 함께 수신합니다.

[Errno 10060] 연결된 호스트가 응답하지 않아 연결된 당사자가 일정 기간 후에 제대로 응답하지 않거나 연결 실패로 인해 연결 시도가 실패했습니다.

이것은 내가 만들려고 시도한 첫 번째 클라이언트/서버이므로 내 지식이 매우 제한적이며 도움이 될 것입니다. 현재 양식의 코드가 아래에 게시됩니다. 감사합니다.

클라이언트 코드 :

import socket 

TCP_IP = '192.168.0.17' 
TCP_PORT = 5005 
BUFFER_SIZE = 20 
MESSAGE = "Hello, World!" 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((TCP_IP, TCP_PORT)) 

for i in range(0,1000): 
    s.send(MESSAGE) 
    data = s.recv(BUFFER_SIZE) 
s.close() 

print 'received data:' 

서버 코드 :

import socket 
from thread import * 

IP = "192.168.0.17" 

print IP 

PORT = input("Enter the PORT number (1 - 10,000)") #input same port number as client (5005) 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 

print "Socket created" 

s.bind((IP, PORT)) 

s.listen(10) 

print "sock now listening" 

while True: 
    connection, addr = s.accept() 
    print "conn established" 
    connection.send("Welcome to the server.") 
    while True: 
     data = connection.recv(1024) 
     if not data: 
      break 
     connection.sendall(data) 
     print data 
     connection.close() 
s.close() 
+1

IP 주소를 게시하지 않는 것이 좋습니다. –

답변

-1

내가 영어 잘 작성하지,하지만 난보십시오. 다음을 시도하십시오. 서버 코드 -> s.bind ((" ', PORT))에서 모든 IP로부터 연결을받을 수 있습니다. 행운

관련 문제