python - 如何使用 Python 套接字连接互联网上的两台计算机?
问题描述
无论我在网上阅读的任何教程都规定了如何在本地网络上连接两台计算机。
我想要做的是将我的Android手机(我有一个安装了Python的终端模拟器——Termux)连接到我的电脑。
服务器 --> Android 手机 --> 互联网
客户端 --> 计算机 --> 互联网
客户端代码:
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 不像某种虚拟环境,因此服务器实际上应该是可公开访问的。
编辑:如果这有任何帮助,我正在使用另一部手机的便携式热点作为对互联网的访问,所以它就像一个路由器。
编辑 2:另外,我尝试执行 telnet myPhone'sIP portNo并且失败了。
解决方案
blackapps在他的题库中间回答了我的问题。
我确实在使用我的 SIM 卡在手机上访问互联网。如果他是正确的,那意味着我的手机不能先收到来自其他设备的请求。我必须与他们建立联系。因此,我不能充当服务器。因此,这个问题根本与 Python 无关,应该关闭。
推荐阅读
- powershell - powershell 获取有关计算机的信息
- functional-programming - 如何在 elm 代码中添加更多 HTML 元素?
- amazon-web-services - AWS CodePipeline 操作执行失败
- kendo-ui - 用于 Angular 的 Kendo UI 将选定的行导出到 Excel
- php - 如何在mysql中对两个查询求和
- java - 如何从文件中读取浮点值并初始化数组?
- javascript - 如何防止在页面加载时显示 Bootstrap 4 警报?
- sql-server - Sqlcmd: Error: Internal error at ExecProcess 文件名、目录名或卷标语法不正确
- java - Spring Boot 文件在下载时损坏
- assembly - 'nt!ObFastDereferenceObject 的 cmpxchg 怎么会失败?