C语言中的网络编程:使用<sys/socket.h>进行TCP/UDP通信(二)

目录

一、C语言中库的概览

头文件包含的主要函数、数据类型及常量

套接字(socket)的概念

总结

二、使用实现TCP通信

创建套接字:socket()函数

建立连接:listen()、accept()与TCP三次握手


一、C语言中<sys/socket.h>库的概览

<sys/socket.h>头文件包含的主要函数、数据类型及常量

<sys/socket.h>是C语言网络编程中的核心头文件,它定义了创建、管理、关闭套接字所需的基本函数、数据类型和常量,为程序员提供了操作套接字的标准化接口。以下是该头文件中包含的主要元素:

1. 数据类型

  • socklen_t:一种无符号整型,用于表示与套接字相关的参数(如地址长度)的大小,确保跨平台兼容性。

  • sockaddrsockaddr_insockaddr_in6等结构体:用于存储网络地址信息,如IP地址、端口号等。sockaddr是通用套接字地址结构,而sockaddr_insockaddr_in6分别用于IPv4和IPv6地址的具体表示。

2. 常量

  • AF_INETAF_INET6:地址族常量,分别标识IPv4和IPv6协议。

  • SOCK_STREAMSOCK_DGRAMSOCK_RAW等:套接字类型常量,分别对应TCP(面向连接的流套接字)、UDP(无连接的数据报套接字)和其他原始套接字类型。

  • SOL_SOCKETIPPROTO_TCPIPPROTO_UDP等:用于设置套接字选项时指定级别(level)的常量,如针对套接字本身的选项、TCP或UDP协议级别的选项。

  • 其他与错误代码、标志位、选项值等相关的常量,如EADDRINUSESO_REUSEADDR等。

3. 函数

  • socket():创建一个新的套接字,返回一个描述符,用于后续的套接字操作。需要指定地址族、套接字类型和协议。

  • bind():将一个套接字与本地地址(IP地址和端口号)绑定,使得该套接字可以接收发往该地址的连接请求或数据报。

  • listen():使一个TCP套接字进入被动监听状态,等待客户端的连接请求。需要指定同时可接纳的最大连接请求队列长度。

  • accept():在监听套接字上接受一个连接请求,返回一个新的已连接套接字描述符,用于与客户端进行数据交换。

  • connect():主动发起一个TCP连接,将一个套接字与远程地址(IP地址和端口号)建立连接。

  • send()recv():在已连接的套接字上发送和接收数据。对于TCP,数据是按序、可靠的;对于UDP,数据是独立的数据报,可能丢失、重复或乱序。

  • sendto()recvfrom():在数据报套接字上发送和接收数据,并可以指定或获取数据的来源/目标地址。

  • close():关闭一个套接字,释放与其相关的系统资源。

  • setsockopt()getsockopt():设置和获取套接字的选项,如缓冲区大小、超时时间、是否复用地址等。

  • shutdown():关闭套接字的读、写或读写方向,用于控制连接的半关闭或完全关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JJJ69

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值