基于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) 关闭
相关推荐
Lzg_na1 小时前
HDLC 协议详解
网络
今天背单词了吗9801 小时前
AI 网关:大模型时代的统一接入与安全防线
网络·人工智能·安全·ai·1024程序员节
CodeGL1 小时前
13、Python基础之网络编程
网络·1024程序员节
lazy H2 小时前
【计算机网络】第 5 篇:TCP 和 UDP 有什么区别?从 Java 后端场景理解两种传输协议
经验分享·后端·网络协议·tcp/ip·计算机网络·1024程序员节
星恒随风3 小时前
Linux网络编程基础(二):彻底理解局域网通信、MAC与IP地址、数据封装、端口号、网络字节序及Socket接口
linux·网络·笔记·学习·tcp/ip·1024程序员节
CHHH_HHH3 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
weixin_417396833 小时前
老酒店有线电视改造怎么做?三种路径对比与施工节奏
网络·技术·酒店·1024程序员节·综合布线·弱电
pt10433 小时前
Cisco设备网络安全系列-12:Web服务器防护与WAF应用
网络·安全
jimmyleeee4 小时前
Agent安全之一:Agent Goal Hijack(ASI01)----当智能体“正确地”执行了错误的目标
运维·网络·安全
byte轻骑兵4 小时前
【LMP】规范精讲[8]: 主从易位——角色切换的时序反转与微微网重构
网络协议·安全·蓝牙协议·lmp·链接管理