与不同网络的通信

时间:2016-09-29 23:05:46

标签: python networking udp

我想用python和PyGame制作游戏,其中两个玩家通过Wi-Fi在不同的网络网络上播放。我目前有这个代码(我从视频中获得)。

# 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()

这在同一台机器上运行良好。我怎么能在两台不同的计算机上(在两个不同的局域网上)进行这项工作?

1 个答案:

答案 0 :(得分:0)

更改为host= '0.0.0.0'(对于服务器)

这使得它发布到任何可用的界面...如果你有路由器,你(可能)还需要使用路由器的端口转发设置来将流量引导到正确的计算机

撇开......这是什么废话? server = ('127.0.0.1',5000)

对于客户端...只需使用适当的端口设置网络的公共IP地址(如果您使用的是端口转发)...您可以找到此IP地址@ http://whatismyip.com