Example #1
0
void search()  /*查询函数*/
{
	int t,flag;
	do
	{
		printf("\n按学号查询请按1;按姓名查询请按2;进入主函数按3\n");
		scanf("%d",&t);
		if(t>=1&&t<=3)
		{
			flag=1;
			break;
		}
		else
		{
			flag=0;
			printf("您输入有误,请重新选择!");
		}
	}
	while(flag==0);
	while(flag==1);
	{
		switch(t)
		{
		case 1:printf("按学号查询\n");search_num();break;
		case 2:printf("按姓名查\n");search_name();break;
		case 3:main();break;
		default:break;
		}
	}
}
Example #2
0
void main()
{
	void creat();
	void insert_by_head();
	void insert_by_end();
	void search_n_ele();
	void search_num();
	void serch_both();
	void del();
	void print();

	creat();
	insert_by_head();
	insert_by_end();
	search_n_ele();
    search_num();
	serch_both();
	del();
    print();
	free(head);

}
Example #3
0
int main(int argc, char *argv[])
{
  int port_no;
  int ipaddr;
  int n;
  char buf[BLKSIZE];
  char buf2[BLKSIZE], output_buff[BLKSIZE];
  struct timeval t1, t2;
  struct sockaddr_in serv_addr2;
  int serv_len2;
  struct hostent *retrieve;
  double r_sec, diff;
  int rflag, wflag, endflag;

  if (argc < 3) {
    fprintf(stderr,"Usage: client serv_addr id(character) [port_no]\n");
    exit(1);
  }
  port_no = (argc > 3) ? atoi(argv[2]) : SERV_UDP_PORT;
  if ((retrieve = gethostbyname(argv[1])) == NULL) {
    printf("Unknown host name: %s\n", argv[1]);
    exit(1);
  }
  id = *argv[2];
  ipaddr = *(unsigned int *)(retrieve->h_addr_list[0]);
  printf("%d.%d.%d.%d (%d) に 入力した文字列を送信します\n",
         ipaddr & 0xff, (ipaddr >> 8) & 0xff, (ipaddr >> 16) & 0xff, (ipaddr >> 24) & 0xff,
         port_no);
  bzero((char *)&serv_addr, sizeof(serv_addr));
  serv_addr.sin_family = AF_INET;
  serv_addr.sin_addr.s_addr = *(unsigned int *)(retrieve->h_addr_list[0]);
  serv_addr.sin_port = htons(port_no);
  
  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
    err_msg("client: can't open datagram socket");
  }
  
  bzero((char *)&cli_addr, cli_len);
  cli_addr.sin_family = AF_INET;
  cli_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  cli_addr.sin_port = htons(0);
  if (bind(sockfd, (struct sockaddr *)&cli_addr, cli_len) < 0) {
    err_msg("client: can't bind local address");
  }
  fcntl(sockfd, F_SETFL, O_NONBLOCK);
  
  rflag = 1; wflag = 0;
  while ( 1 ) {
    if ( rflag == 1 ) { 
      if ( fgets(buf, BLKSIZE, stdin) ) { 
        strtok(buf, "\n\0");
        if ( buf[0] == '\001' ) {
          endflag = 0;
          break;
        }
        rflag = 0;
      }
    }
    if ( rflag == 0 ) { 
      gettimeofday(&t1, NULL);
      sprintf(buf, "%s:%0.f.%0.f", buf, (double)t1.tv_sec, (double)t1.tv_usec);
      if ( sendto(sockfd, buf, BLKSIZE, 0, (struct sockaddr *)&serv_addr, serv_len) > 0) {
        rflag = 1;
      }
    }

    while ( wflag == 0 ) {
      n = recvfrom(sockfd, buf2, BLKSIZE, MSG_WAITALL, (struct sockaddr *)&serv_addr2, &serv_len2);
      gettimeofday(&t2, NULL);  // 受け取った時間を取得
      if ( n > 0 ) { 
        if( buf2[0] == '\001' ) {
          endflag = 1;
          break;
        }
        r_sec = atof(search_num(buf2)); // 時間の部分を取得
        wflag = 1;
      }
    }

    if ( wflag == 1 ) {
      diff = tvaltof(t1.tv_sec, t1.tv_usec) + tvaltof(t2.tv_sec, t2.tv_usec) - r_sec;
      sprintf(output_buff, "%s\n%s\n%.0f.%.0f\n%f", buf, buf2, (double)t2.tv_sec, (double)t2.tv_usec, diff);
      if ( fprintf(stdout, "%s\n", output_buff) ) { wflag = 0; }
    }
  }

  if ( endflag == 0 ) {
    fprintf(stdout, "%d.%d.%d.%d (%d)との通信終了\n", ipaddr & 0xff, (ipaddr >> 8) & 0xff, (ipaddr >> 16) & 0xff, (ipaddr >> 24) & 0xff, port_no);
  }