概念图
创建服务器让A,B主机完成通信。
认识接口
socket
返回值:套接字,你可以认为类似fd
参数:
- domain->:哪种套接字,常用AF_INET(网络套接字)、AF_LOCAL(本地套接字)
- type->:发送数据类型,常用 SOCK_DGRAM(以数据报式发送)
- protocol->:一般填0,自动推导类型或者IPPROTO_UDP、IPPROTO_TCP。
创建一个套接字,类似创建一个文件标识符fd。
先介绍些结构体类型
struct sockaddr
struct sockaddr_in
struct sockaddr_un
_in结构体中保存的是ip\port数据,而_un中保存的则是本地的数据
udp协议为了本地通信与网络通信同一套接口兼容,所以先将sockaddr_in/_un强转成sockaddr类型传入各个函数,在函数中判断前2个字节类型,来做本地通信或者网络通信。
bind
将套接字绑定,一般来说套接字绑定都是服务器才会绑定的,客户端一般给操作系统自动分配ip与端口的。
返回值:成功0,失败-1.设置错误码
参数:
- sockfd 需要绑定的套接字
- sockaddr包含了需要与套接字绑定的ip和端口号。
- addrlen该结构体长度。
recvfrom
用来接收数据的接收
返回值:实际接收数据的长度,-1失败
参数
- sockfd:将从该套接字的端口和ip中取得数据
- buff:输出型参数,将数据存放到buff中。
- len:buff的长度
- flags:以状态等待数据,一般填0,阻塞等待数据
- src_addr:发送方ip+port结构体数据,输出型参数
- 结构体数据长度
sendto
发送数据给某个主机