Socket 编程基础
AI生成
本页内容由 AI 助手生成,为非正式临时页面。
网络编程入门,TCP/UDP 协议详解,加密隧道与路由转发实践。
什么是 Socket
Socket(套接字)是网络编程的基础 API,它允许不同主机上的进程进行通信。
TCP vs UDP
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠传输 | 不保证 |
| 速度 | 较慢 | 较快 |
| 适用场景 | 文件传输、网页 | 视频流、游戏 |
TCP 服务端示例
c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
int main() {
int server_fd, client_fd;
struct sockaddr_in server_addr, client_addr;
socklen_t addr_len = sizeof(client_addr);
char buffer[1024] = {0};
// 创建 socket
server_fd = socket(AF_INET, SOCK_STREAM, 0);
// 绑定地址和端口
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(8080);
bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr));
// 监听
listen(server_fd, 3);
// 接受连接
client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
// 读取数据
read(client_fd, buffer, 1024);
printf("收到消息: %s\n", buffer);
// 发送响应
send(client_fd, "Hello from server", 17, 0);
close(client_fd);
close(server_fd);
return 0;
}下一步学习
- 多线程/多进程服务器
- I/O 多路复用(select/poll/epoll)
- SSL/TLS 加密隧道
- 路由转发与 NAT 穿透
- WebSocket 协议