如何使用Python套接字在互联网上连接两台计算机?

时间:2019-11-16 15:17:45

标签: python android sockets python-sockets

无论我在网上阅读什么教程,都决定了如何连接局域网上的两台计算机。

我想要做的是将我的Android手机(我上面安装了Python的终端仿真器Termux)连接到我的计算机上。

服务器->安卓手机->互联网

客户端->计算机->互联网

客户代码

import socket
server_ip = "<My phone's ip which I can google on my phone>"
port = 9999

s = socket.socket()
s.connect((server_ip, port))
s.send(str.encode("Hello there!", 'utf-8'))
s.close()

服务器代码

import socket

s = socket.socket()
s.bind(('', 9999))
s.listen(1)
conn, addr = s.accept()
print( str(conn.recv(1024), 'utf-8') )

问题是,如果尝试此操作,则会收到TimeoutError。

(PC端代码)

>>> import socket
>>> s = socket.socket()
>>> s.connect(('72.128.66.21', 9999))
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    s.connect(('72.128.66.21', 9999))
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

看来我输入的IP是错误的,所以我重新检查了它,不是。 服务器托管在该IP和端口上。

此外,我认为Termux不像某种虚拟环境,因此服务器实际上应该是可公开访问的。

编辑:如果这有帮助,我正在使用另一部手机的便携式热点作为Internet的访问端口,因此它就像路由器一样。

编辑2:另外,我尝试使用telnet myPhone的IP portNo ,但失败了。

2 个答案:

答案 0 :(得分:-1)

blackapps 在他的问题库中间回答了我的问题。

我确实在使用SIM卡在手机上访问互联网。如果他是正确的,那意味着我的手机不能先收到其他设备的请求。我必须与他们建立联系。因此,我不能充当服务器。因此,这个问题根本与Python不相关,应该关闭。

答案 1 :(得分:-2)

  
    

server_ip = "<My phone's ip which I can google>"

  

在客户端上,您搜索服务器的IP地址吗?你会怎么做?

  
    

服务器->安卓手机->互联网

  

服务器电话通过wifi和路由器与互联网连接了吗?还是使用SIM卡?

如果使用simcard,那么您想要的东西就不可能了,因为手机提供商不允许手机上运行服务器...那么您可以运行服务器,但传入连接被阻止。

  
    

我正在使用另一部手机的便携式热点来访问Internet,因此它就像路由器一样。

  

尚不清楚您是否将热点用于运行服务器的电话。如果是这样,则它将无法使用,因为提供商已阻止了与该热点电话的传入连接。