Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "sys/types.h"
- #include "sys/socket.h"
- #include "netinet/in.h"
- #include <time.h>
- #define BUF_LEN 512 * 2
- void main(int argc, char *argv[])
- {
- int s, n;
- char *haddr;
- struct sockaddr_in server_addr;
- //struct sockaddr_in server_addr : 서버의 소켓주소 구조체
- char* buf = malloc(BUF_LEN);
- if(argc != 2)
- {
- printf("usage : %s ip_Address\n", argv[0]);
- exit(0);
- }
- haddr = argv[1];
- if((s = socket(PF_INET, SOCK_STREAM, 0)) < 0)
- {//소켓 생성과 동시에 소켓 생성 유효검사
- printf("can't create socket\n");
- exit(0);
- }
- bzero((char *)&server_addr, sizeof(server_addr));
- //서버의 소켓주소 구조체 server_addr을 NULL로 초기화
- server_addr.sin_family = AF_INET;
- //주소 체계를 AF_INET 로 선택
- server_addr.sin_addr.s_addr = inet_addr(argv[1]);
- //32비트의 IP주소로 변환
- server_addr.sin_port = htons(7890);
- //daytime 서비스 포트 번호
- if(connect(s, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
- {//서버로 연결요청
- printf("can't connect.\n");
- exit(0);
- }
- int count = 0;
- while(1){
- struct timeval tv;
- double ms, oldms = 0;
- gettimeofday(&tv, NULL);
- oldms = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
- {
- char header[4] = {0};
- n = read(s, header, 4);
- if(header[0] != 'a' || header[1] != 'a' || header[2] != 'a' || header[3] != 'a'){
- exit(0);
- }
- }
- int nSize = 0;
- {
- char size[8] = {0};
- n = read(s, size, sizeof(int));
- nSize = *((int*)size);
- }
- int readLen = 0;
- while(readLen < nSize){
- int length = nSize - readLen;
- if(length > BUF_LEN){
- length = BUF_LEN;
- }
- readLen += read(s, buf, length);
- // usleep(5);
- }
- gettimeofday(&tv, NULL);
- ms = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
- double cpu_time_used = ((double) (ms - oldms));
- printf("=== %d | %d | %f\n", count++, nSize, cpu_time_used);
- }
- close(s);
- //사용이 완료된 소켓을 닫기
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement