关于socket通讯中127.0.0.1的认识

本文介绍了127.0.0.1作为本机地址的角色,主要用于测试。在Windows系统中,127.0.0.1也被称为Localhost,它不会在网络接口上发送数据,而是用于本地进程间通信和网络软件测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常刚开始写socket代码的童鞋经常会在地址里面填上127.0.01如:
mAddrSelf.sin_family = AF_INET;
	mAddrSelf.sin_addr.s_addr = inet_addr("127.0.0.1");
	mAddrSelf.sin_port = htons(port);
但是最近我写一个程序的时候用127.0.0.1时如果连接本机的ip(192.168.1.143)时就会被拒绝错误代码(10061),当时我很纳闷于是把代码改成:
mAddrSelf.sin_family = AF_INET;
	mAddrSelf.sin_addr.s_addr = INADDR_ANY;
	mAddrSelf.sin_port = htons(port);

然后就好了,于是上网搜了一下关于127.0.0.1的描述:

127.0.0.1

### Python Socket 编程简介 Python 的 `socket` 库提供了访问低级网络接口的功能,允许开发者创建客户端和服务端应用程序。通过掌握 `socket` 编程的基础知识,可以更好地理解底层通信机制并实现高效的网络应用。 以下是关于 Python Socket 编程的核心概念及其基本操作: #### 1. **什么是 Socket** Socket 是一种用于在网络中不同设备之间传输数据的技术。它提供了一种通用的方式让程序可以通过网络相互通信[^2]。在 Python 中,`socket` 模块封装了 Berkeley Sockets API,使得开发人员能够轻松构建基于 TCP 或 UDP 协议的应用程序。 #### 2. **MQ 和 Socket 的区别** 消息队列 (Message Queue, MQ) 提供了一个更高层次的抽象来处理异步消息传递,而 socket 则更接近于操作系统层面的操作。相比而言,socket 更灵活但也更加复杂;当需要精细控制或者优化性能时,了解 socket 的工作原理是非常重要的[^1]。 #### 3. **服务端代码示例** 下面是一个简单的服务器端代码片段,展示了如何监听来自客户端的消息,并返回响应给它们: ```python import socket def start_server(): host = '127.0.0.1' port = 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((host, port)) s.listen() conn, addr = s.accept() # 阻塞直到有连接请求 with conn: print('Connected by', addr) while True: data = conn.recv(1024).decode('utf-8') if not data: break print(f"Received message: {data}") response_message = f"ECHO: {data}" conn.sendall(response_message.encode('utf-8')) start_server() ``` 此脚本启动一个本地的服务进程,在指定地址上等待传入链接,并读取发送过来的数据包再发回确认信息。 #### 4. **客户端代码示例** 这里给出对应上述服务器的一个简单客户机版本,该实例向目标主机发起联系并向其传送字符串后接收反馈结果: ```python import socket def send_message_to_server(message): host = '127.0.0.1' port = 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((host, port)) s.sendall(message.encode('utf-8')) received_data = s.recv(1024) decoded_response = received_data.decode('utf-8') return decoded_response if __name__ == "__main__": user_input = input("Enter your message to server:") reply_from_server = send_message_to_server(user_input) print(f"The Server replied:{reply_from_server}") ``` 这段代码实现了与远程机器建立连接、发送自定义文本以及解析回应的过程。 #### 结果展示 运行以上两个部分之后,你应该可以看到如下交互行为发生——每当用户输入一条新命令至终端窗口中的时候,这些字符都会被转发出去并且立即得到镜像式的答复显示出来。 --- ### 总结 学习 Python Socket 不仅是为了实际编写依赖它的软件组件,更重要的是加深对于计算机间通讯本质的认识,从而在未来遇到棘手难题之时具备更多解决问题的可能性思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值