基于TCP的socket编程

1. TCP Socket 是什么

TCP:面向连接、可靠、有序、字节流(stream)

Socket:操作系统提供的网络编程接口(文件描述符/句柄)

一句话:

TCP socket 编程就是让两台主机通过"可靠字节流通道"收发数据。

TCP的关键特点 (决定代码写法)

面向连接:先 connect/accept 才能 send/recv

字节流:没有"消息边界" → 会出现粘包/拆包

可靠有序:丢包重传由内核处理,但你仍要处理断线、超时等

2. TCP 通信流程(必须背熟)

服务端(Server)

socket() 创建监听套接字

bind() 绑定 IP:端口

listen() 进入监听状态

accept() 接受连接 → 得到"已连接socket"

recv()/send() 收发数据(循环)

close() 关闭

客户端(Client)

socket() 创建套接字

connect() 连接服务器

send()/recv() 收发数据(循环)

close() 关闭

3. 核心 API 速查(Linux)

复制代码
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
cpp 复制代码
socket(int domain, int type, int protocol)
AF_INET(IPv4) / AF_INET6
SOCK_STREAM(TCP)
bind(fd, sockaddr*, len) 绑定地址
listen(fd, backlog) 监听
accept(fd, ...) 接受连接
connect(fd, ...) 发起连接
send(fd, buf, len, flags) 发送
recv(fd, buf, len, flags) 接收
close(fd) 关闭
相关推荐
jiankeljx12 分钟前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
三三有猫1 小时前
代理IP:按流量还是按IP/时长计费更划算?
网络·网络协议·tcp/ip
A.A呐2 小时前
【Linux第十九章】网络基础
linux·网络
程序猿追2 小时前
HarmonyOS 6.0 网络请求深度解析:从基础调用到生产级封装
网络·华为·harmonyos
桌面运维家2 小时前
BGP路由优化实战:加速收敛,提升网络稳定性
网络·windows·php
未来转换2 小时前
计算机网络之HTTP协议详解
网络协议·计算机网络·http
乌恩大侠2 小时前
【KrakenSDR】MATLAB接口
服务器·网络·matlab
@土豆3 小时前
bond主备模式配置步骤
网络
国冶机电安装3 小时前
其他弱电系统安装:从方案设计到落地施工的完整指南
大数据·运维·网络
m0_738120724 小时前
我的创作纪念日0328
java·网络·windows·python·web安全·php