虚拟机迁移过程中网络状况测试的测试程序

来源:互联网 发布:矩阵切换系统 编辑:程序博客网 时间:2024/06/11 00:05

最近一直在弄项目的虚拟机网络的配置,现在主要的问题就是要测试在我们进行虚拟机迁移的过程中的网络情况。于是写了一个网络测试程序,因为基于TCP连接的网络,网络是不会丢包的,所以为了更好的显示网络情况,本测试程序是基于UDP的。

客户端程序

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <errno.h> 
  4. #include <string.h> 
  5. #include <netdb.h> 
  6. #include <sys/types.h> 
  7. #include <netinet/in.h> 
  8. #include <sys/socket.h> 
  9.  
  10. #define PORT 9877 /* Server port*/ 
  11. #define MAXDATASIZE 100 /*........... */ 
  12. #define SERVER_IP "127.0.0.1" 
  13.  
  14. int 
  15. main(int argc, char *argv[]) 
  16.  
  17.         int sockfd, sin_size; 
  18.         sin_size = sizeof(struct sockaddr_in); 
  19.         int *buf = (int *)malloc(sizeof(int)); 
  20.         struct sockaddr_in server_addr;/* server */ 
  21.  
  22.         if ((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1) { 
  23.                 perror("socket"); 
  24.                 exit(1); 
  25.         } 
  26.         bzero(&tserver_addr,sizeof(server_addr)); 
  27.         server_addr.sin_family = AF_INET; 
  28.         server_addr.sin_port = htons(PORT); /* short, NBO */ 
  29.         server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); 
  30.         loop: 
  31.         for(i = 1; i < 10000; i++) 
  32.         { 
  33.                 *buf = i; 
  34.  
  35.                 sendto(sockfd, buf, sizeof(int), 0, (struct sockaddr *)&server_addr, sin_size); 
  36.                 printf("client sending: %d\n", *buf); 
  37.                 sleep(1); 
  38.         } 
  39.         goto loop; 
  40.         return 0; 

服务器端程序

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <errno.h> 
  4. #include <string.h> 
  5. #include <sys/types.h> 
  6. #include <netinet/in.h> 
  7. #include <sys/socket.h> 
  8. #include <sys/wait.h> 
  9. #define MYPORT 3490 /*Listen port*/ 
  10.  
  11. void main() 
  12.         int sockfd; /* Data port*/ 
  13.         struct sockaddr_in my_addr; /* myself addr */ 
  14.         struct sockaddr_in client_addr;/* others addr */ 
  15.         int sin_size; 
  16.         sin_size = sizeof(struct sockaddr_in); 
  17.         int *buf = (int *)malloc(sizeof(int)); 
  18.         int i; 
  19.         if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { 
  20.                 perror("socket"); 
  21.                 exit(1); 
  22.         } 
  23.  
  24.         bzero(&my_addr, sizeof(my_addr)); 
  25.         my_addr.sin_family = AF_INET; 
  26.         my_addr.sin_port = htons(MYPORT); /* ...... */ 
  27.         my_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* .....IP */ 
  28.  
  29.         if (bind(sockfd, (struct sockaddr *)&my_addr,sizeof(my_addr)) == -1) { 
  30.                 perror("bind"); 
  31.                 exit(1); 
  32.         } 
  33.  
  34.         while(1){ 
  35.                 *buf = i; 
  36.                 z = recvfrom(sockfd, buf, sizeof(int), 0, (struct sockaddr *)&client_addr, &sin_size); 
  37.                 if(z < 0) 
  38.                         continue
  39.                 printf("server reciving: %d\n", i); 
  40.         } 
  41.  

0 0
原创粉丝点击