linux 程序设计接口,Linux网络编程常用API(一)

// 1、地址结构体(sockaddr)

#include

struct sockaddr

{

sa_family_t sa_family;// 地址族: AF_UNIX、AF_INET、AF_INET6

char sa_data[15];// 地址值

}

// 2、地址结构体(sockaddr_in)

#include

struct sockaddr_in

{

sa_family sin_family;// 地址族: AF_UNIX、AF_INET、AF_INET6

u_int16_t sin_port:// 端口号, 要用网络字节表示

struct in_addr sin_addr;// IPv4地址结构体

}

// 3、IPv4地址结构体

struct in_addr

{

u_int32_t s_addr;// IPv4地址,要用网络字节表示

}

// 4、点分十进制字符串转换为IPv4地址

#include

/*

* 函数: inet_addr

* 参数: strptr(点分十进制字符串表示的IP地址)

* 返回: IPv4地址

*/

in_addr_t inet_addr(const char* strptr);

/*

* 函数: inet_aton

* 参数: cp(点分十进制字符串表示的IP地址)

* inp(指向IPv4地址结构的指针)

* 返回: IPv4地址

*/

int inet_aton(const char* cp, struct in_addr* inp);

// 5、IPv4地址转换为点分十进制字符串 inet_ntoa

/*

* 函数: inet_ntoa

* 参数: in(IPv4地址结构体)

* 返回: 点分十进制字符串表示的IP地址

*/

char* inet_ntoa(struct in_addr in);

// 6、创建socket

#include

#include

/*

* 函数: socket

* 参数: domain(底层协议族 PF_INET、PF_INET6、PF_UNIX)

* type(服务类型 SOCK_STREAM、SOCK_DGRAM)

* protocol(协议, 0表示默认协议)

* 返回: 点分十进制字符串表示的IP地址

*/

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

// 7、命名socket

#include

#include

/*

* 函数: bind

* 参数: sockfd(socket描述符)

* my_addr(地址)

* addrlen(地址长度)

* 返回: 0(成功)

* -1(失败)

*/

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

// 8、监听socket

#include

/*

* 函数: listen

* 参数: sockfd(socket描述符)

* backlog(内核监听队列的最大长度)

* 返回: 0(成功)

* -1(失败)

*/

int listen(int sockfd, int backlog);

// 9、接受连接

#include

#include

/*

* 函数: accept

* 参数: sockfd(socket描述符)

* addr(被连接的远端socket地址)

* addrlen(地址长度)

* 返回: 新的socket(成功)

* -1(失败)

*/

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

// 10、发起连接

#include

#include

/*

* 函数: connect

* 参数: sockfd(socket描述符)

* serv_addr(服务器监听的socket地址)

* addrlen(地址长度)

* 返回: 0(成功)

* -1(失败)

*/

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

// 11、关闭连接

#include

/*

* 函数: close

* 参数: fd(socket描述符)

* 返回: 0(成功)

* -1(失败)

*/

int close(int fd);

#include

/*

* 函数: shutdown

* 参数: sockfd(socket描述符)

* howto(SHUT_RD、SHUT_WR、SHUT_RDWR)

* 返回: 0(成功)

* -1(失败)

*/

int shutdown(int sockfd, int howto);

// 12、TCP数据读写

#include

#include

/*

* 函数: recv

* 参数: sockfd(socket描述符)

* buf(接收缓冲区)

* len(缓冲区大小)

* flags(控制参数, 通常设置为0即可)

* 返回: 实际读取到的数据长度(成功)

* 0(对方已关闭了连接)

* -1(失败)

*/

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

/*

* 函数: send

* 参数: sockfd(socket描述符)

* buf(发送缓冲区)

* len(缓冲区大小)

* flags(控制参数, 通常设置为0即可)

* 返回: 实际发送的数据长度(成功)

* -1(失败)

*/

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

// 13、UDP数据读写

#include

#include

/*

* 函数: recvfrom

* 参数: sockfd(socket描述符)

* buf(接收缓冲区)

* len(缓冲区大小)

* flags(控制参数, 通常设置为0即可)

* src_addr(发送端地址)

* addrlen(地址长度)

* 返回: 实际读取的数据长度(成功)

* -1(失败)

*/

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);

/*

* 函数: sendto

* 参数: sockfd(socket描述符)

* buf(发送缓冲区)

* len(缓冲区大小)

* flags(控制参数, 通常设置为0即可)

* dest_addr(接收端地址)

* addrlen(地址长度)

* 返回: 实际写入的数据长度(成功)

* -1(失败)

*/

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);

// 14、获取地址信息

#include

/*

* 函数: getsockname

* 参数: sockfd(socket描述符)

* address(本端地址)

* address_len(地址长度)

* 返回: 0(成功)

* -1(失败)

*/

int getsockname(int sockfd, struct sockaddr *address, socklen_t *address_len);

/*

* 函数: getpeername

* 参数: sockfd(socket描述符)

* address(远端地址)

* address_len(地址长度)

* 返回: 0(成功)

* -1(失败)

*/

int getpeername(int sockfd, struct sockaddr *address, socklen_t *address_len);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值