Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <oping.h>
- #define NUM_COPS 100
- int do_ping(const char *url, double *time)
- {
- double acum = 0.0, cur_time = 0.0;
- int i, cops_fet = 0;
- for (i = 0; i < NUM_COPS; i++) {
- pingobj_t *ping;
- pingobj_iter_t *iter;
- if ((ping = ping_construct()) == NULL) {
- fprintf(stderr, "ping_construct failed\n");
- return -1;
- }
- printf("ping_construct() success\n");
- if (ping_host_add(ping, url) < 0) {
- const char * errmsg = ping_get_error(ping);
- fprintf(stderr, "ping_host_add(%s) failed. %s\n", url, errmsg);
- return -1;
- }
- printf("ping_host_add() success\n");
- if (ping_send(ping) < 0) {
- fprintf(stderr, "ping_send failed\n");
- return -1;
- }
- printf("ping_send() success\n");
- for (iter = ping_iterator_get(ping); iter != NULL; iter =
- ping_iterator_next(iter)) {
- char hostname[100];
- double latency;
- size_t len;
- printf("ping_iterator_get() success\n");
- len = 100;
- ping_iterator_get_info(iter, PING_INFO_HOSTNAME, hostname, &len);
- len = sizeof(double);
- ping_iterator_get_info(iter, PING_INFO_LATENCY, &latency, &len);
- cur_time = latency;
- printf("hostname = %s, latency = %f\n", hostname, latency);
- }
- if (cur_time > 0.0) {
- cops_fet++;
- acum += cur_time;
- }
- ping_destroy(ping);
- usleep(1000);
- }
- *time = acum/cops_fet;
- printf("exiting...\n");
- return 0;
- }
- int main(int argc, char *argv[])
- {
- if (argc < 3) {
- printf("Usage:\n\t b7ping serverlist outfile\n");
- return -1;
- }
- FILE *fp_in, *fp_out;
- char *line = NULL;
- size_t len = 0;
- ssize_t read;
- fp_in = fopen(argv[1], "r");
- if (fp_in == NULL) {
- printf("Error opening %s\n", argv[1]);
- return-1;
- }
- fp_out = fopen(argv[2], "w");
- if (fp_in == NULL) {
- printf("Error opening %s\n", argv[2]);
- return-1;
- }
- double time;
- while ((read = getline(&line, &len, fp_in)) != -1) {
- line[strlen(line)-1] = '\0';
- do_ping(line, &time);
- fprintf(fp_out, "%s %f\n", line, time);
- usleep(25*1000);
- }
- fclose(fp_in);
- fclose(fp_out);
- if (line) free(line);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement