Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1.  
  2. #include "stdio.h"
  3. #include "sys/types.h"
  4. #include "sys/socket.h"
  5. #include "netinet/in.h"
  6. #include <time.h>
  7.  
  8. #define BUF_LEN 512 * 2
  9.  
  10. void main(int argc, char *argv[])
  11. {
  12. int s, n;
  13. char *haddr;
  14. struct sockaddr_in server_addr;
  15. //struct sockaddr_in server_addr : 서버의 소켓주소 구조체
  16. char* buf = malloc(BUF_LEN);
  17.  
  18. if(argc != 2)
  19. {
  20. printf("usage : %s ip_Address\n", argv[0]);
  21. exit(0);
  22. }
  23. haddr = argv[1];
  24.  
  25. if((s = socket(PF_INET, SOCK_STREAM, 0)) < 0)
  26. {//소켓 생성과 동시에 소켓 생성 유효검사
  27. printf("can't create socket\n");
  28. exit(0);
  29. }
  30.  
  31.  
  32. bzero((char *)&server_addr, sizeof(server_addr));
  33. //서버의 소켓주소 구조체 server_addr을 NULL로 초기화
  34.  
  35. server_addr.sin_family = AF_INET;
  36. //주소 체계를 AF_INET 로 선택
  37. server_addr.sin_addr.s_addr = inet_addr(argv[1]);
  38. //32비트의 IP주소로 변환
  39. server_addr.sin_port = htons(7890);
  40. //daytime 서비스 포트 번호
  41.  
  42. if(connect(s, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
  43. {//서버로 연결요청
  44. printf("can't connect.\n");
  45. exit(0);
  46. }
  47.  
  48. int count = 0;
  49. while(1){
  50. struct timeval tv;
  51. double ms, oldms = 0;
  52. gettimeofday(&tv, NULL);
  53. oldms = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
  54.  
  55. {
  56. char header[4] = {0};
  57. n = read(s, header, 4);
  58. if(header[0] != 'a' || header[1] != 'a' || header[2] != 'a' || header[3] != 'a'){
  59. exit(0);
  60. }
  61. }
  62.  
  63. int nSize = 0;
  64. {
  65. char size[8] = {0};
  66. n = read(s, size, sizeof(int));
  67. nSize = *((int*)size);
  68. }
  69.  
  70. int readLen = 0;
  71. while(readLen < nSize){
  72. int length = nSize - readLen;
  73. if(length > BUF_LEN){
  74. length = BUF_LEN;
  75. }
  76. readLen += read(s, buf, length);
  77. // usleep(5);
  78. }
  79.  
  80. gettimeofday(&tv, NULL);
  81. ms = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
  82. double cpu_time_used = ((double) (ms - oldms));
  83. printf("=== %d | %d | %f\n", count++, nSize, cpu_time_used);
  84. }
  85.  
  86. close(s);
  87. //사용이 완료된 소켓을 닫기
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement