linux的基础知识——网络套接字函数

1.socket函数

 #include <sys/types.h>          /* See NOTES */
 #include <sys/socket.h>

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

功能:创建套接字
参数:domain:AF_INET,AF_INET6, AF_UNIX;type:SOCK_STREAM ,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW ,SOCK_RDM ,SOCK_PACKET ;protocol:一般传入0
返回值:成功返回创建的socket的文件描述符;失败返回-1

2.bind函数

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>

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

功能:服务器程序所监听的网络地址和端口号通常是不变的,客户端程序得知服务器程序的IP地址和端口号之后,向服务器发起连接,因此服务器需要调用bind绑定一个固定的网络地址和端口号。bind函数的作用是把sockft和addr绑定在一起,sockft是一个网络通讯文件描述符,监听addr的地址和端口号。
参数:sockft:文件描述符;addr:IP地址和端口号;addrlen:sizeof(addr)
返回值:成功返回0;失败返回-1

3.listen函数

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>

int listen(int sockfd, int backlog);

功能:允许同时建立连接的数目
参数:sockft:文件描述符;backlog:数量
返回值:成功返回0;失败返回-1

4.accept函数

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

功能:三方握手完成后,服务器调用accept函数接受连接,如果没有客户端连接请求,服务器就阻塞等待直到有客户端连接上来。
参数:sockft:文件描述符;addr:传出参数,返回连接客户端的地址信息,IP地址和端口号;addrlen:传入sizeof(addr),传出真正接收到地址结构体的大小。
返回值:成功返回一个新的文件描述符,用于和客户端通信;失败返回-1。

5.connect函数

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

功能:客户端需要调用connect函数连接服务器
参数:sockft:文件描述符;addr:传入参数,服务器的addr,包括IP地址和端口号;addrlen:传入参数,sizeof(addr)。
返回值:成功返回0,失败返回-1。

猜你喜欢

转载自blog.csdn.net/zxr916/article/details/111329510
今日推荐