2016-09-29 9 views
0

私は、2人のプレーヤーが異なるネットワークネットワーク上でwi-fi経由で遊ぶ、PythonとPyGameでゲームをしたいと考えています。私は現在このコードを持っています(私はビデオから得ました)。異なるネットワークとの通信

# SERVER 

import socket 

def Main(): 
    host = '127.0.0.1' 
    port = 5000 

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((host,port)) 


    print("Server Started.") 
    while True: 
     data, addr = s.recvfrom(1024) 
     data = data.decode('utf-8') 
     print("message From: " + str(addr)) 
     print("from connected user: " + data) 
     data = data.upper() 
     print("sending: " + data) 
     s.sendto(data.encode('utf-8'), addr) 
    c.close() 

if __name__ == '__main__': 
    Main() 

# CLIENT 

import socket 

def Main(): 
    host = '127.0.0.1' 
    port = 5001 

    server = ('127.0.0.1',5000) 

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((host, port)) 

    message = raw_input("-> ") 
    while message != 'q': 
     s.sendto(message.encode('utf-8'), server) 
     data, addr = s.recvfrom(1024) 
     data = data.decode('utf-8') 
     print('Received from server: ' + data) 
     message = raw_input("-> ") 
    s.close() 

if __name__ == '__main__': 
    Main() 

これは同じマシンで正常に動作します。 2つの異なるコンピュータ(2つの異なるLAN上)でこの作業を行うにはどうすればよいですか? (サーバー用)host= '0.0.0.0'

+0

@このIPアドレスをcanfindループバックアドレスではなく実際のIPアドレスに接続します。 2つのネットワークが通信できる場合は、動作するはずです。 –

+0

@RonMaupin、彼はまた、 'port-forward'する必要はありませんか? – coder

+0

@coder、それは依存しています。 NATについては何も問題はありません。 NATを使用しない多くのネットワークがあります。 –

答えて

0

変更

は、これは使用可能な任意のインターフェイスに公開します...あなたは(おそらく)もルーターのポートフォワード設定を使用する必要がありますルータを持っている場合正しいコンピュータに直接トラフィックを転送する

...このナンセンスは何ですか? (あなたがポートフォワーディングを使用している場合)だけで適切なポートを使用してネットワークの公共対向IPアドレスを設定し、クライアントのためのserver = ('127.0.0.1',5000)

は... ...あなたはあなたが必要としていますhttp://whatismyip.com

+0

サーバをパブリックIPアドレスに変更すると、データを送信しようとしても何も起こりません。別のデバイス(同じネットワーク上にある)で同じことを試しても、私は次のようになります。 socket.error:[Errno 111] Connection refused。 –

関連する問題