2012-12-22 4 views
8

인터넷에 액세스 할 수있는 두 대의 컴퓨터간에 데이터를 전송하는 스크립트 작업 중입니다. 나는 파이썬의 소켓 표준 모듈을 사용하고있다. 그것은 하나의 컴퓨터에서 클라이언트와 서버를 모두 실행할 때 잘 작동하지만 다른 컴퓨터에서 실행될 때는 제대로 작동하지 않습니다. 여기 Python : 소켓을 통해 두 컴퓨터간에 데이터 전송

내 서버 코드의 일부이다 :

import socket, time,os, random 

class Server(): 
    def __init__(self,Adress=('',5000),MaxClient=1): 
     self.s = socket.socket() 
     self.s.bind(Adress) 
     self.s.listen(MaxClient) 
    def WaitForConnection(self): 
     self.Client, self.Adr=(self.s.accept()) 
     print('Got a connection from: '+str(self.Client)+'.') 


s = Server() 
s.WaitForConnection() 

그리고 여기 내 클라이언트 코드의 일부이다 :

import socket 

class Client(): 
    def __init__(self,Adress=("Here is the IP of the computer on which the \ 
            server scrip is running",5000)): 
     self.s = socket.socket() 
     self.s.connect(Adress) 

c = Client() 

나는 인터넷 접속이 가능한 두 개의 서로 다른 컴퓨터에서이 스크립트를 실행하면 클라이언트가 연결할 수 없으며 오류가 발생하고 서버가 연결을 영원히 기다리고 있습니다.

내가 뭘 잘못하고 있니?

+2

두 컴퓨터가 어떻게 연결되어 있습니까? 경로에있는 모든 라우터/방화벽/NAT 장치. –

+0

두 대의 컴퓨터가 서로 다른 WiFi에 연결되어 있습니다. –

+0

두 와이파이 라우터는 어떻게 구성되어 있습니까? –

답변

7

이것은 괜찮아 보이는 코드와 관련이 없습니다. 나는 이것이 당신이 사용하고있는 IP 주소에 문제가 있다고 생각합니다.

컴퓨터가 다른 네트워크에있는 경우 통과하는 IP 주소가 인터넷에 액세스 할 수있는 주소인지 확인해야합니다. 기본적으로이 의미는 사용중인 IP가 192.168로 시작하는 경우입니다. 그러면 잘못된 IP를 사용하고있는 것입니다.
(창) :

쉽게 명령을 실행하여 확인할 수 있습니다 ipconfig를
(리눅스) : ifconfig를

당신이 그때 내 라우터 설정을 확인 거라고 올바른 IP 주소를 사용하는 경우와/또는 사용하려고하는 포트 번호를 차단할 수있는 방화벽 설정.

+1

라우터가 서버의 LAN 주소로 포트를 포워드해야하기 때문에 구성 문제라고 확신합니다 ... – l4mpi

+0

문제가 해결되었습니다. 서버가 설정된 컴퓨터로 데이터 패킷을 리디렉션하는 라우터의 문제였습니다. 나는 라우터 설정에서 그것을 변경하고이 컴퓨터의 개인 IP (192.168.1.35) 및 포트 5000으로 패킷을 리디렉션하도록 만들었습니다. 이제 제대로 작동합니다. 고마워요 :) –

관련 문제