示例#1
0
文件: main.c 项目: PoetLiu/program
int main(void)
{
	int sk, fd, len;
	struct sockaddr_in cli_addr;

	len	= sizeof(cli_addr);
	sk	= server_init();

	if (sk < 0) {
		ERROR("server_init error");
		return -1;
	}

	while (1) {
		fd	= accept(sk, (struct sockaddr *)&cli_addr, &len);
		if (fd < 0) {
			ERROR("accept faild");
			continue;
		}
		DEBUG("get a call on (%s:%d)", inet_ntoa(cli_addr.sin_addr.s_addr), \
			ntohs(cli_addr.sin_port)); 
		
		process_rq(fd);
		close(fd);
	}


}
main(int ac, char *av[])
{
    int 	sock, fd;
    FILE	*fpin;
    char	request[BUFSIZ];

    if ( ac == 1 ) {
        fprintf(stderr,"usage: ws portnum\n");
        exit(1);
    }
    sock = make_server_socket( atoi(av[1]) );
    if ( sock == -1 ) exit(2);

    /* main loop here */

    while(1) {
        /* take a call and buffer it */
        fd = accept( sock, NULL, NULL );
        fpin = fdopen(fd, "r" );

        /* read request */
        fgets(request,BUFSIZ,fpin);
        printf("got a call: request = %s", request);
        read_til_crnl(fpin);

        /* do what client asks */
        process_rq(request, fd);

        fclose(fpin);
    }
}
main(int ac, char *av[])
{
	int 	sock, fd;
	FILE	*fpin;
	char	request[BUFSIZ];

	if ( ac == 1 ){
		fprintf(stderr,"usage: ws portnum\n");
		exit(1);
	}
	sock = make_server_socket( atoi(av[1]) );
	if ( sock == -1 ) exit(2);

	

	while(1){
		
		fd = accept( sock, NULL, NULL );
		fpin = fdopen(fd, "r" );

		
		fgets(request,BUFSIZ,fpin);
		printf("got a call: request = %s", request);
		read_til_crnl(fpin);

		
		process_rq(request, fd);

		fclose(fpin);
	}
}
示例#4
0
文件: webserv.c 项目: acgtyrant/UULP
int main(int argc, char *argv[]) {
  if (argc != 2) { fprintf(stderr, "usage: ./webserv portnum\n");
    exit(EXIT_FAILURE);
  }

  int sock_id = make_server_socket(atoi(argv[1]));

  int sock_fd;
  char request[BUFSIZ];
  FILE *sock_fp;
  while (true) { // 循环中自然可以多次接收命令
    sock_fd = accept(sock_id, NULL, NULL);
    sock_fp = fdopen(sock_fd, "r");
    fgets(request, BUFSIZ, sock_fp);
    printf("got a call: request = %s\n", request);
    // sock_fp 和 sock_fd 的位置就是同一个,所以必须处理掉 sock_fp 的输出
    char buf[BUFSIZ];
    while (fgets(buf, BUFSIZ, sock_fp) != NULL && strcmp(buf, "\r\n") != 0)
      ;

    process_rq(request, sock_fd);
    fclose(sock_fp);
  }
  return EXIT_SUCCESS;
}
示例#5
0
void *handle_call(void *fdptr)
{
	FILE	*fpin;
	char	request[BUFSIZ];
	int	fd ;

	fd = *(int *)fdptr;
	free(fdptr);				/* get fd from arg  */

	fpin = fdopen(fd, "r");			/* buffer input	*/
	fgets(request,BUFSIZ,fpin);		/* read client request */
	printf("got a call on %d: request = %s", fd, request);
	skip_rest_of_header(fpin);

	process_rq(request, fd);		/* process client rq */

	fclose(fpin);
}