Socket 小结
函数
注意 accept connect send recv
-
socket()
#include<sys/types.h> #include<sys/socket.h> int socket(int family,int type,int protocal); int family //参数指定所要使用的通信协议 AF_UNIX // Unix 内部协议 AF_INET // Internet 协议 AF_Ns //Xerox NS 协议 AF_IMPLINK //IMP 连接层 int type //指定套接字的类型 SOCK_STREAM//流套字 SOCK_DGRAM//数据报套字 SOCK_RAW //未加工套接字 SOCK_SEQPACKET//顺序包套接字 int protocal //参数常设置为 0 //socket()系统调用返回一个整数值,叫做套接字描述字 sockfd //失败 返回-1
-
bind()
#include<sys/types.h> #include<sys/socket.h> int bind(int sockfd,struct sockaddr *myaddr,int addrlen); //这个调用将一个名字命名给一个没有名字的套接字 //第二个参数 myaddr 是指向一个特定协议地址的指针 //第三个参数是这个地址结构的大小 //bind()有三个作用: //服务器在系统里登记它们的地址 //客户为它自己注册一个地址 //一个没有连接的客户确保系统固定分配给它一个唯一的地址 //成功返回0 失败返回-1
-
connect()
#include<sys/types.h> #include>sys/socket.h> int connect(int sockfd,struct sockaddr *servaddr,int addrlen); //客户端调用 //sockfd 调用socket函数产生的 //servaddr 服务器的信息 //这个过程在 socket()调用后,将一个套接字描述符和一个与服务器建立的 连接的联系 //成功返回0 失败返回-1
客户端调用
sockfd 调用socket函数产生的
servaddr 服务器的信息
-
listen
#include<sys/types.h> #include<sys/socket.h> int listen(int sockfd,int backlog); //面向连接的服务器使用这个系统调用,来表示它希望接受连接 //这个系统调用通常在 socket()和 bind()之后,在 accept()调用之前调用 //参数 backlog 表示当它们等待执行 accept()系统调用之前 //系统能对多少个连 接请求进行排队
-
accept()
#include<sys/types.h> #include<sys/socket.h> int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen); //服务器调用 //sockfd 前面服务器端已经bind 的socket描述符 //addr 传出参数 返回链接客户端地址信息 含IP 和 端口号 //传入传出参数 传入sizeof(addr) 大小 函数返回时 返回真正接收到地址结构体的大小 //返回值 成功返回新的socket 文件描述符 用于和客户端通信 败返回-1
服务器调用
sockfd 前面服务器端已经bind 的socket描述符
addr 客户端信息
返回值 成功返回新的socket 文件描述符 用于和客户端通信 失败返回-1
-
send() recv()
#include<sys/types.h> #include<sys/socket.h> int send(int sockfd,char *buff,int nbytes,int flags); //不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据 //第一个参数指定 发送端 套接字描述符 //第三个参数指明 实际要发送 的数据的字节数 //第四个参数一般置0 int recv(int sockfd,char *buff,int nbytes,int flags); //不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据 //第一个参数指定 接收端 套接字描述符 //第三个参数指明 buf的长度 //第四个参数一般置0
send 发送到另一端
recv 接受另一端
-
close()
#include<sys/types.h> #include<sys/socket.h> int close(int sockfd); //关闭一个套接字
来源:CSDN
作者:YangJie-Edith
链接:https://blog.csdn.net/Northern_Light_Y/article/details/104462215