socketAPI函数

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

函数说明:创建socket

函数说明:

domain:协议版本,一般用AF_INET

 Name         Purpose                                    Man page
       AF_UNIX      Local communication                        unix(7)
       AF_LOCAL     Synonym for AF_UNIX
       AF_INET      IPv4 Internet protocols                    ip(7)
       AF_AX25      Amateur radio AX.25 protocol               ax25(4)
       AF_IPX       IPX - Novell protocols
       AF_APPLETALK AppleTalk                                  ddp(7)
       AF_X25       ITU-T X.25 / ISO-8208 protocol             x25(7)
       AF_INET6     IPv6 Internet protocols                    ipv6(7)
       AF_DECnet    DECet protocol sockets
       AF_KEY       Key  management protocol, originally de‐
                    veloped for usage with IPsec
       AF_NETLINK   Kernel user interface device               netlink(7)
       AF_PACKET    Low-level packet interface                 packet(7)
       AF_RDS       Reliable Datagram Sockets (RDS) protocol   rds(7)
                                                               rds-rdma(7)
       AF_PPPOX     Generic PPP transport layer, for setting
                    up L2 tunnels (L2TP and PPPoE)

type:协议类型

 SOCK_STREAM(TCP协议)     Provides sequenced, reliable, two-way, connection-based
                       byte  streams.  An out-of-band data transmission mecha‐
                       nism may be supported.

 SOCK_DGRAM(UDP协议)      Supports datagrams (connectionless, unreliable messages
                       of a fixed maximum length).

protocol:一般填0

返回值:

RETURN VALUE
       On success, a file descriptor for the new socket is returned.   On  er‐
       ror, -1 is returned, and errno is set appropriately.

当调用socket函数以后以后,返回一个文件描述符,内核会提供与该文件描述符相对应的读与写缓冲区,同时还有两个队列,分别是请求连接队列和已连接队列

int bind(int sockfd, const struct sockaddr *addr,
                socklen_t addrlen);

 函数描述:将socket文件描述符和IP,PORT(端口)绑定

参数参数:

sockerfd:调用socker函数返回的文件描述符

addr:本地服务器的IP地址和PROT:

struct sockaddr_in addr;
addr.sin_family_t =AF_INET;
addr.sin_port=htons(9999);//在网络中,端口两个字节要变成网络字节序
1:addr.sin_addr.s_addr=ptonl(INADDR_ANY);//在网络中,IP四个字节要变成网络字节序
//INADR_ANY表示本机可用任意IP
2:inet_pton(AF_INET,"128.0.0.1",&addr.sin_addr.s_addr);

addrlen:addr变量占用的内存大小

返回值:成功返回0,失败返回-1,并设置error值

int listen(int sockfd, int backlog);

函数描述:将套接字由主动态变被动态

函数说明:

backlog:同时建立连接的最大个数;

返回值:成功返回0,失败返回-1,并设置error值

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

函数说明:获得一个连接,若没有连接就阻塞等待

函数参数:

addr:传出参数,保存客户端的地址信息

addrlen:传入传出参数,addraddr变量占用的内存大小

accept函数是一个阻塞函数,会从已连接队列中获取一个新的连接,并获取一个新的文件描述符,该文件描述符用于和客户端通信

int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);

函数说明:连接服务端

函数参数:

addr:服务端的地址信息

 addrlen:addr变量占用的内存大小

返回值:成功返回0,失败返回-1,并设置error值

读取发送数据:write(send)   read(recv)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落落落sss

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

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

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

打赏作者

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

抵扣说明:

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

余额充值