连接到不同网络中的python服务器

时间:2017-12-29 18:18:37

标签: python sockets network-programming

My port forward rule 我创建了一个python TCP服务器和客户端,当我在我的计算机上启动服务器和客户端时以及当我在同一网络上的不同计算机上启动服务器和客户端时工作正常,但我想让它在计算机上工作在不同的网络。我已将我的路由器端口8080转发到我的计算机中转换为8888,事实上我还有一个规则,我的路由器上的端口80转换为我的PC上的8080,即Wamp服务器,并且因为python服务器不工作我猜测它来自代码,但我无法弄清楚:

服务器:

import socket

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

sck.bind(("127.0.0.1", 8888))               

sck.listen(1)    
conn, adr = sck.accept()
print('Connected to ', adr)
while 1:
    data = conn.recv(1024).decode()
    if data and ('over' not in data):
        conn.send(data.encode())
        continue
    break
conn.close()

客户端:

import socket

sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect(('<my_external_ip>', 8888))

while True:
    data = input('Say something: ')
    if 'Shut up' in data:
        sck.send('over'.encode())
        sck.close
        break
    sck.send(data.encode())

我做了这个测试:

    启动了Wamp服务器并尝试通过我的外部IP使用chrome(工作)
访问它
    打开我的Python TCP客户端并连接到Wamp服务器(正常工作)
    关闭Wamp并使用与Wamp相同的端口启动我的python服务器,然后尝试使用python客户端访问(不工作)

如果TCP服务器代码没有问题,为什么Wamp工作而他不工作?请检查以下内容 - 什么是绑定127.0.0.1背后的逻辑我无法理解......这不会让它只能被我的电脑访问吗?

如果那个部分没问题,至少是与服务器代码相关的东西,我猜......

0 个答案:

没有答案