]>
git.proxmox.com Git - ceph.git/blob - ceph/src/civetweb/test/testclient.c
4 #if defined(_WIN32) || defined(WIN32)
6 void INIT(void) {WSADATA wsaData
; WSAStartup(MAKEWORD(2,2), &wsaData
);}
11 #include <sys/types.h>
12 #include <sys/socket.h>
13 #include <netinet/in.h>
16 int connect_to_server(const struct sockaddr_in
* serv_addr
)
21 sockfd
= socket(AF_INET
, SOCK_STREAM
, 0);
23 perror("ERROR opening socket");
27 /* Connect to the server */
28 if (connect(sockfd
, (const sockaddr
*)serv_addr
, sizeof(*serv_addr
)) < 0) {
29 perror("ERROR connecting");
37 int send_to_server(int conn
, const char * request
)
39 int req_len
= strlen(request
);
42 n
= write(conn
, request
, req_len
);
44 perror("ERROR writing to socket");
51 int read_from_server(int conn
)
57 n
= read(conn
, rbuffer
, sizeof(rbuffer
));
59 perror("ERROR reading from socket");
63 if (strncmp("HTTP/1.", rbuffer
, 7)) {
64 perror("ERROR not a HTTP response");
68 ret
= atol(rbuffer
+ 9);
74 int main(int argc
, char *argv
[])
80 int connlist
[1024*65];
82 struct hostent
*server
;
83 struct sockaddr_in serv_addr
;
88 fprintf(stderr
,"Usage:\n\t%s hostname port clients\n\n", argv
[0]);
92 con_count
= atol(argv
[3]);
93 if (con_count
<1) con_count
=1;
94 if (con_count
>1024*65) con_count
=1024*65;
96 portno
= atol(argv
[2]);
97 if (portno
<1l || portno
>0xFFFFl
) {
98 fprintf(stderr
, "ERROR, invalid port\n");
102 server
= gethostbyname(argv
[1]);
103 if (server
== NULL
) {
104 fprintf(stderr
, "ERROR, no such host\n");
108 memset(&serv_addr
, 0, sizeof(serv_addr
));
109 serv_addr
.sin_family
= AF_INET
;
110 memcpy(server
->h_addr
, &serv_addr
.sin_addr
.s_addr
, server
->h_length
);
111 serv_addr
.sin_port
= htons((short)portno
);
113 sprintf(wbuffer
, "GET / HTTP/1.0\r\n\r\n");
116 for (i
=0;i
<con_count
;i
++) {
117 result
[i
] = connlist
[i
] = connect_to_server(&serv_addr
);
120 for (i
=0;i
<con_count
;i
++) {
122 result
[i
] = send_to_server(connlist
[i
], wbuffer
);
126 for (i
=0;i
<con_count
;i
++) {
128 result
[i
] = read_from_server(connlist
[i
]);
134 printf("conn: %.0lf\n", difftime(t2
,t1
));
135 printf("write: %.0lf\n", difftime(t3
,t2
));
136 printf("read: %.0lf\n", difftime(t4
,t3
));
138 for (i
=-10;i
<1000;i
++) {
140 for(j
=0;j
<con_count
;j
++) {
141 if (result
[j
]==i
) cnt
++;
144 printf("%5i\t%7i\n", i
, cnt
);