基本UDP套接字编程
1. recvform和sendto函数
这两个函数类似于read和write函数,不过需要三个额外的参数。sockfd、buff、nbytes这三个参数为描述符、指向读入或写入缓冲区的指针、和读写字节数。
2.UDP回射服务器:main函数
创建UDP套接字,捆绑服务器的众所周知接口。socket函数的第二个参数指定为SOCKET_DGRAM创建一个UDP套接字。
代码:
3.UDP回射服务器程序:dg_echo函数
读数据报并回射给发送者
该函数是一个简单的循环,它使用recvform读入下一个到达服务器端口的数据报,再使用sendto把它发送回发送者。
4.UDP回射客户程序:main函数
把服务器地址填入套接字地址结构
把服务器的ip地址和端口号填入一个IPV4的套接字地址结构。该结构将传递给dg_cli函数,已指明数据报将发往何处。
5.UDP回射客户程序:dg_cli函数
6.数据报的丢失
我们的UDP客户/服务器是不可靠的,如果一个客户数据丢失,客户永远阻塞与dg_cli函数中的recvform调用,等待一个永远不会发到服务器的应答。防止这样永远阻塞的方法就是给客户的recvfrom调用设置一个超时。
7.验证接受到的响应
验证另一个套接字地址结构,比较返回的地址。
8.UDP的connect连接
9.dg_cli函数
所做的修改就是调用connect,并以read和write调用代替 sendto和recvfrom调用
小结