记一次网络io学习流水账。

记一次网络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) 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值