简单实现UDP服务端与客户端

    /*
  5 UDP的网络传输服务端程序-------简单的聊天服务端程序
  6 1、创建socket
  7 2、为套接字绑定地址信息
  8 3、数据传输
  9 4、关闭socket
 10 */
 11 #include<unistd.h>
 12 #include<errno.h>
 13 #include<sys/socket.h>
 14 #include<stdio.h>
 15 #include<sys/socket.h>
 16 #include<netinet/in.h>
 17 #include<arpa/inet.h>
 18 #include<string.h>
 19 #include<stdlib.h>
 20 
 21 int main(){
 22    //1、创建套接字
 23     int sockfd=-1;
 24     sockfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);//三个参数信息:domain协议域;流式套接字(TCP协议                                                      //);协议类型;
 25     if(sockfd<0){
 26     perror("socket");
perror("socket");
 27     return -1;
 28     }
 29     struct sockaddr_in addr;//IPv4版本的地址信息:struct sockaddr_in
 30     addr.sin_family=AF_INET;
 31     addr.sin_port=htons(9000);//使用网络字节序
 32     addr.sin_addr.s_addr=inet_addr("192.168.231.128");
 33 
 34     //2、绑定
 35     socklen_t len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
 36     int ret=bind(sockfd,(struct sockaddr*)&addr,len);
 37     if(ret!=0){
 38         perror("bind");
 39         return -1;
 40     }
 41     //3、数据传输
 42     while(1){
 43         //1、接收客户端数据
 44         char buff[1024]={0};
 45         struct sockaddr_in cli_addr;
 46         
 47         recvfrom(sockfd,buff,1023,0,(struct sockaddr*)&cli_addr,&len);
 48    
 50         printf( " say:%s\n",buff);
 51 
 52         //2、向客户端回复信息
 53         char tmp[1024]={0};
 54         printf("you say:");
 55         scanf("%s",tmp);
 56         len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
 57         sendto(sockfd,tmp,strlen(tmp),0,(struct sockaddr*)&cli_addr,len);
 58     }
      //关闭socket
 59     close(sockfd);
 60     return 0;
 61 }
  4 /*
  5 UDP的网络传输客户端程序-------简单的聊天客户端程序
  6 1、创建socket
  7 
  8 2、数据传输
  9 3、关闭socket
 10 */
 11 #include<unistd.h>
 12 #include<errno.h>
 13 #include<sys/socket.h>
 14 #include<stdio.h>
 15 #include<sys/socket.h>
 16 #include<netinet/in.h>
 17 #include<arpa/inet.h>
 18 #include<string.h>
 19 #include<stdlib.h>
 20 
 21 int main(){
 22    //1、创建套接字
 23     int sockfd=-1;
 24     sockfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 25     if(sockfd<0){
 26     perror("socket");
 27     return -1;
 28     }
 29     struct sockaddr_in serv_addr;
30     serv_addr.sin_family=AF_INET;
 31     serv_addr.sin_port=htons(9000);//使用网络字节序
 32     serv_addr.sin_addr.s_addr=inet_addr("192.168.231.128");
 33 
 34     socklen_t len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
 41     //2、数据传输
 42         char buff[1024]={0};
 43         struct sockaddr_in cli_addr;
 44     while(1){
 45         //1/向服务端发送信息
 46 
 47 
 48         printf("you ssay:\n");
 49         char tmp[1024]={0};
 50         scanf("%s",tmp);
 51         sendto(sockfd,tmp,strlen(tmp),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
 52        //2、接收服务端信息
 53         ssize_t _s=recvfrom(sockfd,buff,1023,0,(struct sockaddr*)&cli_addr,&len);
 54         if(_s>0){
 55             buff[_s]=0;
 56             printf("%s\n",buff);
 57         }
 58     }
       //关闭socket
 59     close(sockfd);
 60     return 0;
 61 }

猜你喜欢

转载自blog.csdn.net/na_hanqiannan/article/details/81664557