基本常用函数介绍
1.int socket(int domain, int type, int protocol);
创建一个socket套接字,并返回一个套接字描述符
第一个参数用以选择套字的协议族
常用参数极其目的如下:
第二个参数用以选择套接字的传输方式,在TCP协议中我们选择**SOCK_STREAM**使我们的创建的套接字成为 一个有序的,可靠的,双向数据流。
第三个参数为0。
返回值>0为socket描述符,等于0说明创建socket错误。
void bzero(void *s, size_t n);
bzero()函数可以将前N个字节的信息设置为'\0'。 无返回值 参数: *s ——想要的更改的数据 n ——想要更改数据的长度
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:连接服务器
参数
sockfd——我们之前创建的套接字描述符
sockaddr的结构体,其内部定义如下:
struct sockaddr_in {
short sin_family /AF_INET/
u_short sin_port; /端口号,网络字节顺序/
struct in_addr sin_addr; /IP地址,网络字节顺序/
char sin_zero[8]; /填充字节,必须为全零/
};
我们可以在sockaddr中定义端口号,套接字类型,ip地址如下:addrlen——地址结构长度
设置代码:
ClientSock1.sin_family = AF_INET;
ClientSock1.sin_port = htons(PORT1);
ClientSock1.sin_addr.s_addr = inet_addr("127.0.0.1");
连接代码
if(connect(sockfd1,(struct sockaddr*)&ClientSock1,ClientLen1)==-1){
printf("connect error");
exit(1);
}
返回值:
0 -成功 ,-1 - 失败,errno 为错误代码
4.int bind(int sockfd,struct sockaddr *myaddr,int addrlen);
功能:绑定本地地址和端口
参数:
sockfd-socket描述符
myaddr-自己的地址
addrlen-地址结构长度
返回值:
0-成功,-1-失败,errno为错误代码
注意:
服务器和客户端均可以绑定socket地址,但客户端通常不绑定自己的socket地址,而是系统随机分配一个端口,由该端口和本机ip地址填充套接字地址。
if(bind(sockfd,(struct sockaddr*)&serverAddr,serverLen)==-1){
printf("bind error");
exit(1);
}
5.int listen(int sockfd,int qlen)
功能:监听本地地址和端口
参数:
sockfd-已绑定的socket描述符
qlen - socket能处理的最大并发连接数
返回值
0-成功,-1-