socket编程
封面图
•
2025-12-15
•
嵌入式
209
0
0
0
Socket 编程是网络通信的基础,用于在不同设备之间进行数据传输。它通常用于实现客户端-服务器模型,其中客户端和服务器通过网络进行通信。 下面是关于 **Socket 编程** 的基本概念和示例(以 Python 为例): --- ## 🧩 一、什么是 Socket? Socket 是一种 **网络通信端点**,它允许两个程序通过网络进行数据交换。它可以是本地的(如进程间通信),也可以是远程的(如互联网上的两台机器)。 --- ## 📌 二、Socket 的类型 1. **流式套接字(TCP)** - 基于 TCP 协议 - 提供可靠的数据传输(有序、无差错) - 适用于需要稳定连接的场景(如网页、邮件) 2. **数据报套接字(UDP)** - 基于 UDP 协议 - 不保证数据包的顺序和可靠性 - 速度快,适合实时性要求高的场景(如视频直播、游戏) --- ## 🧰 三、Python 中的 Socket 编程示例 ### ✅ 1. TCP 服务端(Server) ```python import socket # 创建 socket 对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 server_socket.bind(('localhost', 12345)) # 监听连接 server_socket.listen(1) print("Server is listening...") # 接受客户端连接 client_socket, client_address = server_socket.accept() print(f"Connected by {client_address}") # 接收数据 data = client_socket.recv(1024) print(f"Received: {data.decode()}") # 发送响应 client_socket.sendall(b"Hello from server!") # 关闭连接 client_socket.close() server_socket.close() ``` --- ### ✅ 2. TCP 客户端(Client) ```python import socket # 创建 socket 对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务器 client_socket.connect(('localhost', 12345)) # 发送数据 client_socket.sendall(b"Hello from client!") # 接收响应 response = client_socket.recv(1024) print(f"Received: {response.decode()}") # 关闭连接 client_socket.close() ``` --- ### ✅ 3. UDP 服务端(Server) ```python import socket # 创建 UDP socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定地址和端口 server_socket.bind(('localhost', 12345)) print("UDP Server is listening...") while True: data, addr = server_socket.recvfrom(1024) print(f"Received from {addr}: {data.decode()}") server_socket.sendto(b"UDP Response", addr) ``` --- ### ✅ 4. UDP 客户端(Client) ```python import socket # 创建 UDP socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送数据 client_socket.sendto(b"UDP Message", ('localhost', 12345)) # 接收响应 response, server_address = client_socket.recvfrom(1024) print(f"Received: {response.decode()}") # 关闭连接 client_socket.close() ``` --- ## 📚 四、常见函数说明 | 函数 | 说明 | |------|------| | `socket.socket()` | 创建一个新的 socket 对象 | | `bind()` | 将 socket 绑定到特定的地址和端口 | | `listen()` | 监听连接(仅用于 TCP) | | `accept()` | 接受一个连接请求(仅用于 TCP) | | `connect()` | 连接到远程主机(仅用于 TCP) | | `send()` / `recv()` | 发送/接收数据(TCP) | | `sendto()` / `recvfrom()` | 发送/接收数据(UDP) | | `close()` | 关闭 socket | --- ## 💡 五、注意事项 - 在使用完 socket 后务必关闭,防止资源泄漏。 - TCP 是面向连接的,必须先建立连接再发送数据。 - UDP 是无连接的,可以直接发送数据。 - 网络编程中要处理异常(如断开连接、超时等)。 --- 如果你有具体的编程语言需求(如 C、Java、C++、Node.js 等),我可以提供对应语言的示例。 是否需要我帮你扩展某个部分?比如:多线程服务器、异步 socket、加密通信(SSL/TLS)等?
上一篇:
通信USB
下一篇:
驱动开发设计
标题录入,一次不能超过6条
留言
评论