UDP应用程序客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目的地的地址作为参数。

下图给出典型的UDP客户/服务器程序的函数调用。

UNP学习笔记(第八章 基本UDP套接字编程)

 

 

 

 

recvfrom和sendto函数

这两个函数类似于标准的read和write函数,不过需要3个额外的参数

#include <sys/socket.h>
ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags,const struct sockaddr *to, socklen_t addrlen);
                                                                         //均返回:若成功则为读或写的字节数,若出错则为-1

 

 

 

UDP回射服务器程序

UNP学习笔记(第八章 基本UDP套接字编程)

main函数

 1 #include    "unp.h"
 2 
 3 int
 4 main(int argc, char **argv)
 5 {
 6     int                    sockfd;
 7     struct sockaddr_in    servaddr, cliaddr;
 8 
 9     sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
10 
11     bzero(&servaddr, sizeof(servaddr));
12     servaddr.sin_family      = AF_INET;
13     servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
14     servaddr.sin_port        = htons(SERV_PORT);
15 
16     Bind(sockfd, (SA *) &servaddr, sizeof(servaddr));
17 
18     dg_echo(sockfd, (SA *) &cliaddr, sizeof(cliaddr));
19 }
View Code

相关文章: