我最近有一些困难,通过互联网将套接字连接到另一台计算机的插座一个插口连接到另一台电脑的插座,图像胜过千言万语:如何通过互联网
计算机一运行这个 “listener.py” 脚本:
import socket
PORT = 50007
BUFFER = 2048
HOST = ''
if __name__ == '__main__':
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(BUFFER)
if not data: break
conn.sendall(data)
计算机乙运行这个 “sender.py” 脚本:
import socket
HOST = '101.81.83.169' # The remote host
PORT = 50007 # The same port as used by the server
if __name__ == '__main__':
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
所以首先,我运行计算机一个的 “听众” 脚本。然后,我运行计算机B的“发件人”脚本。但是,当我执行“发件人”脚本时,我收到一条错误消息,这说明我无权连接到此远程地址。
所以我想知道如何通过互联网连接套接字到另一个套接字而无需更改路由器配置。
非常感谢您的帮助。
编辑:这里的错误信息(我并没有因为某些原因执行相同的脚本,但它是同样的错误消息)
sock.connect(('101.81.83.169',50007)) Traceback (most recent call last): File "<stdin>", line 1, in
<module> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in
meth return getattr(self._sock,name)(*args) socket.error: [Errno 61] Connection refused
中看到了什么错误讯息'sender.py'? – Prabhu
'我收到一条错误消息,说明我无权连接到此远程地址。不,你不知道。您收到错误消息。不要解释,解释,破坏。告诉我们*确切*,*实际*错误消息。 *我们*会告诉你*它是什么意思。在这种情况下,'拒绝连接'具有一个含义:没有任何内容在您指定的IP:端口上进行侦听。与授权无关。 – EJP
@EJP:“拒绝连接”并不总是意味着一个端口不在监听(在这种情况下,它会)。它也可能意味着端口正在监听,但其暂挂连接的积压目前已满。这也可能意味着中间防火墙在连接到达侦听端口之前阻止了连接。 “拒绝连接”仅仅意味着 - 连接被拒绝,但客户不知道为什么它被拒绝。 –