套接字编程(二)-----基于UDP协议

来源:互联网 发布:好听的网络公司名称 编辑:程序博客网 时间:2024/06/13 18:26

服务器端:

#include<stdio.h>#include<sys/socket.h>#include<sys/types.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<stdlib.h>int usage(const char *proc){printf("usage:%s [local_ip] [local_port]",proc);}int main(int argc,char *argv[]){    if(argc!=3)    {      usage(argv[0]);      return 1;    }   int sock=socket(AF_INET,SOCK_DGRAM,0);   if(sock<0)   {     perror("socket");     return 1;   }   struct sockaddr_in local;   local.sin_family=AF_INET;   local.sin_port=htons(atoi(argv[2]));   local.sin_addr.s_addr=inet_addr(argv[1]);   if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)   {       printf("please enter:");     perror("bind");     return 3;   }   struct sockaddr_in client;   socklen_t len=sizeof(client);   char buf[1024];   while(1)   {     ssize_t s=recvfrom(sock,buf,sizeof(buf)-1,0,\             (struct sockaddr*)&client,&len);     if(s>0)     {       buf[s]=0;       printf("%s:%d say: %s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buf);       sendto(sock,buf,strlen(buf),0,\              (struct sockaddr*)&client,len);     }   }   close(sock);   return 0;}

客户端

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>static void usage(const char *proc){ printf("usage:[local_ip] [local_port]",proc);}int main(int argc,char *argv[]){   if(argc!=3)   {     usage(argv[0]);     perror("usage");     return 1;   }   int sock=socket(AF_INET,SOCK_DGRAM,0);   if(sock<0)   {    perror("socket");    return 2;   }   struct sockaddr_in peer;   peer.sin_family=AF_INET;   peer.sin_port=htons(atoi(argv[2]));   peer.sin_addr.s_addr=inet_addr(argv[1]);   char buf[1024];   while(1)   {    printf("please enter:");    fflush(stdout);    ssize_t s=read(sock,buf,sizeof(buf)-1);    if(s>0)    {      buf[s-1]=0;      sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&peer,sizeof(peer));      ssize_t _s=recvfrom(sock,buf,sizeof(buf)-1,0,NULL,NULL);      printf("sever echo:%s\n",buf);    }   }}
原创粉丝点击