UDP客户服务器程序所用的套接字函数
为UDP套接字调用connect。并没有发生三次握手,内核只是检查是否有立即可知的错误(目的地不可达),记录对端的IP地址和端口号(取自传递给connect的套接字地址结构)。然后立即返回。
对于已调用connect的UDP套接字,与默认的未连接的套接字相比,发生了三个变化:
(1)、不能给输出操作指定IP地址和端口号。(不能调用sendto,而应改为调用write或send)。写到已连接UDP套接字上的任何内容都自动发送到有connect指定的协议地址(IP地址和端口号)。ps:若一定要使用sendto函数,则不能指定目的IP地址和端口号,也就是说sendto的第五个参数要为NULL,第六个参数为0。
(2)、不必是用recvfrom以获得数据包的发送者,而改用read、recv或recvmsg。在一个已连接的UDP套接字上,由内核为输入操作返回的数据报只有那些来自connect指定协议地址的数据报。
(3)、由已连接UDP套接字引发的异步错误会返回给他们所在的进程,而未连接UDP套接字不接收任何异步错误。