client.c 发送消息
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<unistd.h>
#include<sys/wait.h>
#include<signal.h>
#include<stdio.h>
#include<string.h>
int main (void)
{
int sock ;
if((sock=socket(PF_INET,SOCK_DGRAM,0)) <0)
{
perror("socket");
return 1 ;
}
struct sockaddr_in servaddr;
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(12345);
servaddr.sin_addr.s_addr = inet_addr("192.168.0.104");
char str[4]="123";
int i = 1;
while (i++!= 100000000)
{
sendto(sock,str, sizeof(str), 0,(struct sockaddr *)&servaddr, sizeof(servaddr));
}
close(sock);
return 0;
}
server.c收消息
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<unistd.h>
#include<sys/wait.h>
#include<signal.h>
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define MAXBUF 1024
int main (void)
{
int listener,kdpfd,nfds,n;
socklen_t len;
len = sizeof(struct sockaddr_in);
struct sockaddr_in my_addr,peer_addr;
clock_t start,finish;
double time;
if((listener=socket(PF_INET,SOCK_DGRAM,0))==-1)
{
perror(" socket ");
exit(1);
}
int opt=SO_REUSEADDR;
if(setsockopt(listener,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt))==-1)
{
perror("setsockopt");
exit(1);
}
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(12345);
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
if((bind(listener,(struct sockaddr *)&my_addr,sizeof (struct sockaddr))==-1))
{
perror("bind");
exit(1);
}
int cnt;
int i;
for(i= 0 ;i<10;i++)
{
cnt = 0;
start = clock();
while(1)
{
recvfrom(listener,0,0,0,(struct sockaddr *)&peer_addr,&len);
++cnt;
if(cnt == 100000)
break;
}
finish = clock();
time += (double)(finish - start)/CLOCKS_PER_SEC;
}
printf("%lf \n",time/10);
close(listener);
close(kdpfd);
return 0;
}