int main(int argc, char **argv) { int sockfd, ret; float ti, rt; long len; struct sockaddr_in ser_addr; char ** pptr; struct hostent *sh; struct in_addr **addrs; FILE *fp; if (argc != 2) { printf("parameters not match"); } if ((sh=gethostbyname(argv[1]))==NULL) { //get host's information printf("error when gethostbyname"); exit(0); } printf("canonical name: %s\n", sh->h_name); //print the remote host's information for (pptr=sh->h_aliases; *pptr != NULL; pptr++) printf("the aliases name is: %s\n", *pptr); switch(sh->h_addrtype) { case AF_INET: printf("AF_INET\n"); break; default: printf("unknown addrtype\n"); break; } addrs = (struct in_addr **)sh->h_addr_list; sockfd = socket(AF_INET, SOCK_DGRAM, 0); //create the socket if (sockfd <0) { printf("error in socket"); exit(1); } ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(MYUDP_PORT); memcpy(&(ser_addr.sin_addr.s_addr), *addrs, sizeof(struct in_addr)); bzero(&(ser_addr.sin_zero), 8); if((fp = fopen ("myfile.txt","r+t")) == NULL) { printf("File doesn't exit\n"); exit(0); } ti = str_cli1(fp, sockfd, (struct sockaddr *)&ser_addr, sizeof(struct sockaddr_in), &len); // receive and send rt = (len/(float)ti); //caculate the average transmission rate printf("Time(ms) : %.3f, Data sent(byte): %d\nData rate: %f (Kbytes/s)\n", ti, (int)len, rt); close(sockfd); fclose(fp); exit(0); }
int main( int argc, char **argv ) { int fd[2]; int sockfd; struct sockaddr_in servaddr; char string[MAXLINE]; /* Take in read and write end pipe fd's for writing statuses back to parent process */ sscanf( argv[2], "%d %d", &fd[0], &fd[1] ); strcpy( string, "Connecting to port 61616 for echo service..\n" ); write( fd[1], string, ( strlen(string)+1 ) ); sockfd = socket( AF_INET, SOCK_STREAM, 0 ); /* Filling in the socket address structure with server address parameters for time service*/ bzero( &servaddr, sizeof( servaddr ) ); servaddr.sin_family = AF_INET; servaddr.sin_port = htons( 61616 ); inet_pton( AF_INET, argv[1], &servaddr.sin_addr ); /* Attempting connection with server */ if( connect( sockfd, (SA *) &servaddr, sizeof( servaddr ) ) == -1 ) { memset( string, 0, sizeof( string ) ); strcpy( string, "SERVER_UNAVAILABLE\n" ); write( fd[1], string, ( strlen(string)+1 ) ); return 1; } memset( string, 0, sizeof( string ) ); strcpy( string, "Connected to server echo service..\n" ); write( fd[1], string, ( strlen(string)+1 ) ); /* Calling time client function to handle service */ str_cli1( stdin, sockfd, fd[1] ); /* do it all */ close( sockfd ); return 1; }