标签:127.0 socket sck 遇到 0.1 ip bind localhost
问题
简单的socket通信代码如下。当service 和client都在同一台机器上时,使用loaclhost 或127.0.0.1 为ip地址时,是ok的。但将client地址换位真实的ip地址时,无法连通。
# service.py
import socket
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.bind(("localhost", 8001))
sck.listen(5)
while True:
conn, addr = sck.accept()
print(addr)
# client.py
import socket
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = ('127.0.0.1', 8001)
sck.connect(ip)
sck.close()
首先说明当前代码为什么可以运行。localhost和127.0.0.1是等价的,所以是可以的。
当客户端部署到另一台机器上时,需要向某个ip发送请求,但服务器值bind了localhost,而没有bind对应的局域网中的ip,所以只修改客户端中的ip是无法进行访问的。必须保证服务器和客户端都使用相同的ip。
127.0.0.1 和localhost
命令ifconfig会列出当前全部的网卡,其中有lo的是本地的,ip为127.0.0.1,也就是localhost。这个在ubuntu中是写在 /etc/hosts 中,可以通过以下命令查看。localhost是一个域名,只是默认对应127.0.0.1,可以通过修改上述文件来修改映射。
cat /etc/hosts
标签:127.0,socket,sck,遇到,0.1,ip,bind,localhost 来源: https://blog.csdn.net/qq_38420683/article/details/119428921
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。