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

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

客户端程序

  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; 
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORT 9877 /* Server port*/
#define MAXDATASIZE 100 /*........... */
#define SERVER_IP "127.0.0.1"

int
main(int argc, char *argv[])
{

        int sockfd, sin_size;
        sin_size = sizeof(struct sockaddr_in);
        int *buf = (int *)malloc(sizeof(int));
        struct sockaddr_in server_addr; /* server */

        if ((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1) {
                perror("socket");
                exit(1);
        }
        bzero(&tserver_addr,sizeof(server_addr));
        server_addr.sin_family = AF_INET;
        server_addr.sin_port = htons(PORT); /* short, NBO */
        server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
        loop:
        for(i = 1; i < 10000; i++)
        {
                *buf = i;

                sendto(sockfd, buf, sizeof(int), 0, (struct sockaddr *)&server_addr, sin_size);
                printf("client sending: %d\n", *buf);
                sleep(1);
        }
        goto loop;
        return 0;
}

服务器端程序

  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.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值