UDP服务器的创建步骤:  
一、创建用户数据报套接字(socket函数): 通信域选择IPV4网络协议、套接字类型选择数据报式;   
	int  sockfd =  socket ( AF_INET, SOCK_DGRAM, 0 ) ;  
  
二、填充服务器的网络信息结构体: 1.定义网络信息结构体变量; 2.求出结构体变量的内存空间大小; 3.结构体清零; 4.使用IPV4网络协议; 5.预留给在终端输入的网络字节序的端口号; 6.预留给在终端输入的IP地址;   
	struct  sockaddr_in  serveraddr;  socklen_t  serveraddrlen =  sizeof ( serveraddr) ; memset ( & serveraddr, 0 , serveraddrlen) ;  serveraddr. sin_family =  AF_INET;   serveraddr. sin_addr. s_addr =  inet_addr ( argv[ 1 ] ) ;  serveraddr. sin_port =  htons ( atoi ( argv[ 2 ] ) ) ;  
  
三、套接字和服务器的网络信息结构体进行绑定(bind函数):   
	int  ret =  bind ( sockfd, ( struct  sockaddr  * ) & serveraddr, serveraddrlen) ; 
  
四、接收来自客户端的数据(recvfrom函数)和给客户端发送应答消息(sendto函数):   
	int  ret1 =  recvfrom ( sockfd, buf, sizeof ( buf) , 0 , ( struct  sockaddr  * ) & clientaddr, & clientaddrlen) ; strcat ( buf, "------------k" ) ; int  ret2 = sendto ( sockfd, buf, sizeof ( buf) , 0 , ( struct  sockaddr  * ) & clientaddr, clientaddrlen) ; 
  
 
	close ( sockfd) ; 
  
 UDP客户端的创建步骤:  
一、创建用户数据报套接字(socket函数): 通信域选择IPV4网络协议、数据报式套接字;   
	int  sockfd =  socket ( AF_INET, SOCK_DGRAM, 0 ) ;  
  
二、填充服务器的网络信息结构体: 1.定义网络信息结构体变量; 2.求出结构体变量的内存空间大小; 3.结构体清零; 4.使用IPV4网络协议; 5.预留给在终端输入的网络字节序的端口号; 6.预留给在终端输入的IP地址;   
	struct  sockaddr_in  serveraddr;  socklen_t  serveraddrlen =  sizeof ( serveraddr) ; memset ( & serveraddr, 0 , serveraddrlen) ; serveraddr. sin_family =  AF_INET;  serveraddr. sin_addr. s_addr =  inet_addr ( argv[ 1 ] ) ; serveraddr. sin_port =  htons ( atoi ( argv[ 2 ] ) ) ;  
  
三、向服务器发送数据(sendto函数)和接收来自服务器端的应答消息(recvfrom函数): 注意 :接收来自服务器端的应答消息,不需要保存再次保存服务器的网络信息结构体,因为未曾修改过;  
	sendto ( sockfd, buf, sizeof ( buf) , 0 , ( struct  sockaddr  * ) & serveraddr, serveraddrlen) ; memset ( buf, 0 , sizeof ( buf) ) ; recvfrom ( sockfd, buf, sizeof ( buf) , 0 , NULL , NULL ) ;   printf ( "应答:[%s]\n" , buf) ; 
  
 
	close ( sockfd) ;