记一次网络IO学习流水账:从基础到实践
网络IO是计算机系统中不可或缺的一部分,涉及数据的输入输出操作。理解网络IO的工作原理对于开发高性能网络应用至关重要。以下是一次深入学习网络IO的记录,涵盖基础概念、常见模型及代码示例。
网络IO基础概念
网络IO的核心是通过套接字(Socket)实现数据传输。套接字是网络通信的端点,支持TCP和UDP协议。TCP提供可靠的数据流传输,而UDP则提供无连接的数据报服务。
网络IO操作通常分为阻塞和非阻塞两种模式。阻塞模式下,线程会一直等待操作完成;非阻塞模式下,线程可以继续执行其他任务,通过轮询或事件通知机制获取操作结果。
常见的网络IO模型
阻塞IO模型
阻塞IO是最简单的模型,线程在执行读写操作时会阻塞,直到数据准备好或操作完成。以下是一个简单的阻塞IO示例(使用Python的socket模块):
import socket
# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen(5)
print("Server is listening on port 8080...")
while True:
client_socket, addr = server_socket.accept()
print(f"Connection from {addr}")
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")
client_socket.send(b"Hello from server!")
client_socket.close()
非阻塞IO模型
非阻塞IO通过设置套接字为非阻塞模式,允许线程在数据未准备好时继续执行其他任务。以下是非阻塞IO的示例:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setblocking(False)
### 记一次网络IO学习流水账:从基础到实践
网络IO是计算机系统中不可或缺的一部分,涉及数据的输入输出操作。理解网络IO的工作原理对于开发高性能网络应用至关重要。以下是一次深入学习网络IO的记录,涵盖基础概念、常见模型及代码示例。
---
### 网络IO基础概念
网络IO的核心是通过套接字(Socket)实现数据传输。套接字是网络通信的端点,支持TCP和UDP协议。TCP提供可靠的数据流传输,而UDP则提供无连接的数据报服务。
网络IO操作通常分为阻塞和非阻塞两种模式。阻塞模式下,线程会一直等待操作完成;非阻塞模式下,线程可以继续执行其他任务,通过轮询或事件通知机制获取操作结果。
---
### 常见的网络IO模型
#### 阻塞IO模型
阻塞IO是最简单的模型,线程在执行读写操作时会阻塞,直到数据准备好或操作完成。以下是一个简单的阻塞IO示例(使用Python的`socket`模块):
```python
import socket
# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen(5)
print("Server is listening on port 8080...")
while True:
client_socket, addr = server_socket.accept()
print(f"Connection from {addr}")
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")
client_socket.send(b"Hello from server!")
client_socket.close()
非阻塞IO模型
非阻塞IO通过设置套接字为非阻塞模式,允许线程在数据未准备好时继续执行其他任务。以下是非阻塞IO的示例:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setblocking(False)

被折叠的 条评论
为什么被折叠?



