Linux搭建服务器和客户端所用的函数
/**
公司主营业务:网站设计制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出贵定免费做网站回馈大家。
*功能:创建套接字同时指定协议和类型
*#include
*family(协议簇): AF_INET(IPv4协议) AF_INET6(IPv6协议)
*type(套接字类型):SOCK_STREAM(流式套接字) TCP通信使用
SOCK_DGRAM(数据报套接字) UDP通信使用
SOCK_RAW(原始套接字)
*protocol:如果套接字类型不是原始套接字,那么这个参数就为0.
* 返回值:成功:非负套接字文件描述符
失败:-1
*int socket(int family,int type,int protocol);
*/
/**
*功能:将保存在相应地址结构中的地址信息与套接字进行绑定。主要是服务器端套接字需要绑定,客户端套 接字一般不需要绑定,内核会自动分配地址给套接字
*sockfd:socket()函数成功返回的文件描述符
*my_addr:绑定存放地址信息的结构体
*addrelen:存地址信息结构体的大小
*返回值:成功:0
失败:-1
*int bind(int sockfd,struct sockaddr *my_addr,int addrlen);
*/
struct sockaddr{
unsigned short sa_family; //协议簇 AF_XXX
char sa_data[14]; //14字节的协议地址
};
struct sockaddr_in{
short int sin_family; //协议簇
unsigned short int sin_port; //端口号 短整型 占2字节 16位
struct in_addr sin_addr; // IP地址 占4字节 32位
unsigned char sin_zero[8]; //填充0,占8字节 保持struct sockaddr和struct sockaddr_in结构体大小相同
};
struct in_addr{
unsigned long s_addr; //32位ip地址
};
通常用struct sockaddr_in来保存某个网络地址,在使用时强转成struct sockaddr类型的指针。
/**
*#include
*功能:客户端向服务器建立连接
*int connect(int sockfd,struct sockaddr *serv_addr,int addrlen);
*返回值:成功:0
失败:-1
*/
/**
*功能:将套接字设置成监听模式(被动模式),准备接收客户端的请求。
*backlog:请求队列中允许的最大请求数,大多数系统默认值为5.
*int listen(int sockfd,int backlog);
*返回值:成功:0
失败:-1
*/