TCP编程API

这里写自定义目录标题

  • [主要的 TCP 编程 API 函数](#主要的 TCP 编程 API 函数)
    • [1.1 socket()](#1.1 socket())
    • [1.2 bind()](#1.2 bind())
    • [1.3 listen()](#1.3 listen())
    • [1.4 accept()](#1.4 accept())
    • [1.5 connect()](#1.5 connect())
    • [1.6 send()](#1.6 send())
    • [1.7 recv()](#1.7 recv())
    • [1.8 close()](#1.8 close())

主要的 TCP 编程 API 函数

1.1 socket()

创建一个新的套接字。

c 复制代码
int socket(int domain, int type, int protocol);

domain:指定协议族,一般为 AF_INET(IPv4)或 AF_INET6(IPv6)。

AF_INET IPv4 Internet protocols ip(7)

AF_INET6 IPv6 Internet protocols ipv6(7)

AF_UNIX, AF_LOCAL Local communication unix(7)

AF_NETLINK Kernel user interface device netlink(7)

AF_PACKET Low level packet interface packet(7)

type:指定套接字类型,SOCK_STREAM 用于 TCP。

SOCK_STREAM: 流式套接字 唯一对应于TCP

SOCK_DGRAM: 数据报套接字,唯一对应着UDP

SOCK_RAW: 原始套接字

protocol:指定协议,通常为 0,让系统自动选择合适的协议(通常是 TCP)。

返回值:成功返回新创建的套接字描述符,失败返回 -1。

1.2 bind()

将套接字与本地的 IP 地址和端口号进行绑定。

c 复制代码
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

sockfd:套接字描述符。

addr:指向 struct sockaddr 类型的地址结构,包含了 IP 地址和端口号信息。

struct sockaddr_in

u_short sin_family // protocol family

u_short sin_port // port number

struct in_addr sin_addr //IP address (32-bits)

addrlen:地址结构的大小。

返回值:成功返回 0,失败返回 -1。

1.3 listen()

将套接字设置为监听模式,准备接受传入的连接请求。

c 复制代码
int listen(int sockfd, int backlog);

sockfd:套接字描述符。

backlog:等待连接队列的大小。

返回值:成功返回 0,失败返回 -1。

1.4 accept()

接受客户端的连接请求,返回新的套接字描述符用于与客户端通信。

c 复制代码
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

sockfd:服务器端套接字描述符。

addr:指向 struct sockaddr 的指针,用于返回客户端的地址信息。

addrlen:地址结构的大小。

返回值:返回新的套接字描述符,用于与客户端进行数据交换。

1.5 connect()

客户端通过此函数向服务器发起连接请求。

c 复制代码
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

sockfd:套接字描述符。

addr:指向服务器地址的结构体。

addrlen:地址结构的大小。

返回值:成功返回 0,失败返回 -1。

1.6 send()

向已连接的套接字发送数据。

c 复制代码
ssize_t send(int sockfd, const void *buf, size_t len, int flags);

sockfd:套接字描述符。

buf:发送的数据缓冲区。

len:数据的字节数。

flags:控制标志,通常为 0。

返回值:成功返回发送的字节数,失败返回 -1。

1.7 recv()

从套接字接收数据。

c 复制代码
ssize_t recv(int sockfd, void *buf, size_t len, int flags);

sockfd:套接字描述符。

buf:接收数据的缓冲区。

len:缓冲区的大小。

flags:控制标志,通常为 0。

返回值:成功返回接收到的字节数,失败返回 -1,返回 0 表示连接关闭。

1.8 close()

关闭套接字,释放资源。

c 复制代码
int close(int sockfd);

sockfd:套接字描述符。

返回值:成功返回 0,失败返回 -1。

相关推荐
降临-max36 分钟前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
1560820721941 分钟前
基于7VX690T FPGA实现万兆TCP/IP资源和性能测试
网络协议·tcp/ip·fpga开发
赖small强1 小时前
【Linux 网络基础】libwebsockets HTTPS 服务端实现机制详解
linux·网络·https·tls·libwebsockets
大白的编程日记.2 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
踏浪无痕3 小时前
线上偶发 502 排查:用 Netty 成功复现 KeepAlive 时间窗口案例实战(附完整源码)
运维·网络协议
shmexon3 小时前
上海兆越亮相无锡新能源盛会,以硬核通信科技赋能“能碳未来”
网络·人工智能
北京耐用通信4 小时前
告别“牵一发而动全身”:耐达讯自动化Profibus PA分线器为石化流量计网络构筑安全屏障
人工智能·网络协议·安全·自动化·信息与通信
Sinowintop4 小时前
易连EDI-EasyLink无缝集成之消息队列Kafka
分布式·网络协议·kafka·集成·国产化·as2·国产edi
Lay_鑫辰4 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
车载测试工程师5 小时前
CAPL学习-IP API函数-2
网络·学习·tcp/ip·capl·canoe