Linux Socket编程实战指南
Linux网络Socket编程基础
Socket是网络通信的基石,Linux通过系统调用提供了一套完整的Socket API。TCP(传输控制协议)是一种面向连接、可靠的传输层协议,适用于需要数据完整性的场景。
创建TCP Socket需使用SOCK_STREAM类型和AF_INET(IPv4)或AF_INET6(IPv6)地址族。基本流程包括:Socket创建、绑定地址、监听连接、接受连接、数据读写和关闭连接。
关键系统调用:
socket():创建Socket文件描述符。bind():将Socket绑定到特定IP和端口。listen():启动监听传入连接。accept():接受客户端连接。connect()(客户端):主动连接服务器。
TCP服务器端实现
服务器端需处理多客户端连接,通常结合fork()或select()/epoll()实现并发。
示例代码片段:
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(8080);
bind(server_fd, (struct sockaddr*)&addr, sizeof(addr));
listen(server_fd, 5);
while (1) {
int client_fd = accept(server_fd, NULL, NULL);
// 处理客户端请求
close(client_fd);
}
}
TCP客户端实现
客户端通过connect()发起连接,成功后通过send()/recv()交换数据。
示例代码片段:
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
// 发送和接收数据
close(sock);
}
错误处理与资源管理
- 检查系统调用返回值,处理
EINTR等错误。 - 使用
setsockopt()设置SO_REUSEADDR避免端口占用。 - 确保关闭所有文件描述符,防止资源泄漏。
性能优化与高级特性
- 非阻塞IO:通过
fcntl()设置O_NONBLOCK标志,结合select()/epoll()实现高并发。 - TCP_NODELAY:禁用Nagle算法,降低延迟。
- Keepalive:通过
SO_KEEPALIVE检测连接状态。
调试与工具
netstat或ss:查看Socket状态。tcpdump:抓包分析通信内容。strace:跟踪系统调用。
通过合理设计错误处理和并发模型,TCP Socket编程可构建高性能网络应用。实际开发中需结合协议设计(如HTTP、自定义协议)和加密(TLS)以增强安全性。
BbS.okane367.info/PoSt/1121_447484.HtM
BbS.okane368.info/PoSt/1121_636977.HtM
BbS.okane369.info/PoSt/1121_333477.HtM
BbS.okane370.info/PoSt/1121_746537.HtM
BbS.okane371.info/PoSt/1121_137569.HtM
BbS.okane372.info/PoSt/1121_405570.HtM
BbS.okane373.info/PoSt/1121_085078.HtM
BbS.okane374.info/PoSt/1121_267011.HtM
BbS.okane375.info/PoSt/1121_591190.HtM
BbS.okane376.info/PoSt/1121_499414.HtM
BbS.okane367.info/PoSt/1121_554697.HtM
BbS.okane368.info/PoSt/1121_473455.HtM
BbS.okane369.info/PoSt/1121_504520.HtM
BbS.okane370.info/PoSt/1121_297837.HtM
BbS.okane371.info/PoSt/1121_702077.HtM
BbS.okane372.info/PoSt/1121_457590.HtM
BbS.okane373.info/PoSt/1121_618713.HtM
BbS.okane374.info/PoSt/1121_788340.HtM
BbS.okane375.info/PoSt/1121_088213.HtM
BbS.okane376.info/PoSt/1121_521060.HtM
BbS.okane377.info/PoSt/1121_719483.HtM
BbS.okane378.info/PoSt/1121_485721.HtM
BbS.okane379.info/PoSt/1121_235944.HtM
BbS.okane380.info/PoSt/1121_171322.HtM
BbS.okane381.info/PoSt/1121_198719.HtM
BbS.okane382.info/PoSt/1121_736431.HtM
BbS.okane383.info/PoSt/1121_389982.HtM
BbS.okane384.info/PoSt/1121_410760.HtM
BbS.okane385.info/PoSt/1121_866226.HtM
BbS.okane386.info/PoSt/1121_057190.HtM
BbS.okane377.info/PoSt/1121_345153.HtM
BbS.okane378.info/PoSt/1121_202272.HtM
BbS.okane379.info/PoSt/1121_353915.HtM
BbS.okane380.info/PoSt/1121_907709.HtM
BbS.okane381.info/PoSt/1121_969557.HtM
BbS.okane382.info/PoSt/1121_754261.HtM
BbS.okane383.info/PoSt/1121_282252.HtM
BbS.okane384.info/PoSt/1121_539105.HtM
BbS.okane385.info/PoSt/1121_208739.HtM
BbS.okane386.info/PoSt/1121_747349.HtM
BbS.okane377.info/PoSt/1121_660826.HtM
BbS.okane378.info/PoSt/1121_251221.HtM
BbS.okane379.info/PoSt/1121_477909.HtM
BbS.okane380.info/PoSt/1121_336654.HtM
BbS.okane381.info/PoSt/1121_075684.HtM
BbS.okane382.info/PoSt/1121_875561.HtM
BbS.okane383.info/PoSt/1121_594604.HtM
BbS.okane384.info/PoSt/1121_348670.HtM
BbS.okane385.info/PoSt/1121_415308.HtM
BbS.okane386.info/PoSt/1121_170393.HtM
BbS.okane377.info/PoSt/1121_257113.HtM
BbS.okane378.info/PoSt/1121_660421.HtM
BbS.okane379.info/PoSt/1121_361842.HtM
BbS.okane380.info/PoSt/1121_862425.HtM
BbS.okane381.info/PoSt/1121_473966.HtM
BbS.okane382.info/PoSt/1121_070139.HtM
BbS.okane383.info/PoSt/1121_437514.HtM
BbS.okane384.info/PoSt/1121_627933.HtM
BbS.okane385.info/PoSt/1121_225376.HtM
BbS.okane386.info/PoSt/1121_544409.HtM
BbS.okane377.info/PoSt/1121_394002.HtM
BbS.okane378.info/PoSt/1121_894465.HtM
BbS.okane379.info/PoSt/1121_796379.HtM
BbS.okane380.info/PoSt/1121_494113.HtM
BbS.okane381.info/PoSt/1121_141012.HtM
BbS.okane382.info/PoSt/1121_357924.HtM
BbS.okane383.info/PoSt/1121_858367.HtM
BbS.okane384.info/PoSt/1121_946855.HtM
BbS.okane385.info/PoSt/1121_550843.HtM
BbS.okane386.info/PoSt/1121_526678.HtM
BbS.okane377.info/PoSt/1121_274605.HtM
BbS.okane378.info/PoSt/1121_774919.HtM
BbS.okane379.info/PoSt/1121_554744.HtM
BbS.okane380.info/PoSt/1121_953746.HtM
BbS.okane381.info/PoSt/1121_595925.HtM
BbS.okane382.info/PoSt/1121_714034.HtM
BbS.okane383.info/PoSt/1121_063732.HtM
BbS.okane384.info/PoSt/1121_048359.HtM
BbS.okane385.info/PoSt/1121_204328.HtM
BbS.okane386.info/PoSt/1121_962030.HtM
查看14道真题和解析