编程使用函数<一>

目录

前言:

time()

socket();

setsockopt()


前言:

        总结一些编程时遇到的函数,会依次按照所需包含头文件、功能、返回值和参数的顺序来介绍,资料参考man手册和互联网。


time()

time_t time(time_t *tloc);

头文件:#include <time.h>

功能:time()函数返回1970-01-01 00:00:00+0000(UTC)以来的秒数。(返回时间戳)

返回值:使用成功返回1970-01-01 00:00:00+0000(UTC)以来的秒数,(返回时间戳);错误返回-1,并设置错误码

参数:如果参数为空,正常返回时间戳,如果参数不为空,则返回的同时将时间戳保存到tloc参数所指向的地址中。

time_t 类型实质为长整型


socket()

int socket(int domain, int type, int protocol);

头文件:#include <sys/types.h>

                #include <sys/socket.h>

功能:创建网络套接字用于进行网络通信。

返回值:创建成功返回新套接字的文件描述符,错误返回-1,并设置错误码

参数:

        第一个参数 (int domain):指定通信协议的类型,这些系列在《sys/socket.h》中定义。目前已知的格式包括:

协议名字功能
AF_UNIX,AF_LOCAL实现本地通信
AF_INETIPv4协议
AF_INET6IPv6协议
AF_IPXIPX协议
AF_NETLINK内核用户通信界面
AF_X25
AF_AX25业余无线电通信协议
AF_ATMPVC
AF_APPLETALK苹果公司定制的协议
AF_PACKET
AF_ALG

内核加密API接口

        第二个参数(int type):指定套接字的通信类型。目前一直选项包括:

SOCK_STREAM提供流式套接字,这种套接字提供了双向的、
可靠的、基于连接的字节流服务。
TCP协议就是使用这种套接字。
SOCK_DGRAM提供数据报套接字,这种套接字提供了无连接、
不可靠的数据报服务。
UDP协议就是使用的这种套接字
SOCK_SEQPACKET表示顺序数据包套接字,通常在SCTP协议中使用。
提供长度固定、有序、可靠的面向连接报文传递服务。
在使用时,从套接字接收的数据量和对端发送的数据量必须匹配,
即必须将这个包完整的接收才能进行读取。
SOCK_RAW提供原始套接字。
SOCK_RDM提供可靠的数据包连接
SOCK_PACKET过时方案。

        第三个参数(int protocol):通常设置为0,表示选择使用默认协议。需要选择特定协议,也可以指定它。


setsockopt()

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

头文件:#include <sys/types.h>

                #include <sys/socket.h>

功能:用于设置套接字选项,达到修改套接字的行为或性能,以适应特定的网络环境和应用程序需求。

返回值:成功时返回0,表示操作成功完成,如果函数调用失败,返回-1,并设置全局变量errno说明错误原因。

参数:

        第一个参数(int sockfd):将要被设置的套接字

        第二个参数(int level):将要设置选项的层次。

选项功能
SOL_SOCKET表示基本的套接字选项
IPPROTO_TCP表示TCP协议选项
IPPROTO_IP表示IP协议选项
IPPROTO_IPV6表示IPv6协议选项

        第三个参数(int optname):设置的具体的选项名,不同的level和optname组合,支持的选项名也会有所不同,一些常见的选项包括:

选项功能
SO_REUSEADDR设置地址重用,
解决bind()失败的问题。
SO_REUSEPORT设置端口重用,
解决多进程同时监听同一端口的问题。

        第四个参数(const void *optval):一个用来指向设置选项值缓冲区的指针。

        第五个参数(socklen_t optlen):表示optval缓冲区长度。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值