예제 #1
0
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);
}
예제 #2
0
파일: echo_cli.c 프로젝트: anthonykjose/533
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;
}