Esempio n. 1
0
int main(int argc, char *argv[])
{
    int sockfd;
    struct sockaddr_in servaddr;

    if (argc != 2) 
        handle_err("usage: client <IP address>");

    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd == -1)
        handle_err("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERV_PORT);
    if (inet_aton(argv[1], &servaddr.sin_addr) == 0)
        handle_err("error IP address");

    // if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) {
    //     handle_err("connecting error");
    // }

    // printf("Finish connecting\n");

    str_cli(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr));

    close(sockfd);
    exit(EXIT_SUCCESS);
}
Esempio n. 2
0
int main(int argc, char *argv[])
{
    int sockfd, count;
    struct sockaddr_in servaddr;
    struct sigaction act, oact;
    // act.sa_handler = sig_pipe;
    act.sa_handler = SIG_IGN;

    if (argc != 2) 
        handle_err("usage: client <IP address>");

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd == -1)
        handle_err("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);
    servaddr.sin_port = htons(SERV_PORT);

    if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
        handle_err("connecting error");
    
    if (shutdown(sockfd, SHUT_RD) < 0)
        handle_err("shutdown error");

    if (sigaction(SIGPIPE, &act, &oact) < 0) {
        handle_err("sigaction error");
    }

    cli_str(sockfd);
    close(sockfd);
    exit(EXIT_SUCCESS);
}
Esempio n. 3
0
int open_listenfd() {
    int listenfd, ret;
    int optval = 1;
    struct sockaddr_in servaddr;

    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    handle_err(listenfd == -1, "server listenfd");

    ret = setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval, sizeof(optval));
    handle_err(ret == -1, "setsockopt in eliminating address already used\n");

    ret = setsockopt(listenfd, 6, TCP_CORK, (const void *)&optval, sizeof(optval));
    handle_err(ret == -1, "setsockopt in enhancing response speed");

    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVER_PORT);
    servaddr.sin_addr.s_addr = inet_addr(SERVER_IP);
    ret = bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
    handle_err(ret < 0, "server bind");

    ret = listen(listenfd, SOMAXCONN);
    handle_err(ret < 0, "server listen");

    return listenfd;
}
Esempio n. 4
0
int main(int argc, char *argv[])
{
    signal(SIGUSR1, handle_signal);
    global_init();

    int listenfd = open_listenfd();

    struct epoll_event event;

    struct sockaddr_in peeraddr;
    socklen_t socklen;
    int sock;
    int nready, i;
    char buf[1024];

    epollfd = epoll_create1(EPOLL_CLOEXEC);
    event.data.fd = listenfd;
    event.events = EPOLLIN | EPOLLET;
    epoll_ctl(epollfd, EPOLL_CTL_ADD, listenfd, &event);

    while (g_switch == 0) {
        nready = epoll_wait(epollfd, events, MAX_EVENTS, -1);
        if (nready == -1) {
            if (errno == EINTR)
                continue;
            handle_err(1, "epoll_wait");
        }

        for (i = 0; i < nready; ++i) {
            if (events[i].data.fd == listenfd) {
                socklen = sizeof(peeraddr);
                sock = accept4(listenfd, (struct sockaddr *) &peeraddr, &socklen, SOCK_NONBLOCK);
                handle_err(sock == -1, "accept4");

                printf("new client %s:%hu accepted\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port));
                sprintf(buf, "recv from (%s:%hu)\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port));
                write_log(buf);

                event.data.fd = sock;
                event.events = EPOLLIN | EPOLLET;
                epoll_ctl(epollfd, EPOLL_CTL_ADD, sock, &event);
            } else {
                int *ptr = malloc(sizeof(int));
                *ptr = events[i].data.fd;
                threadpool_add(thp, do_task, (void *)(ptr), 0);
            }
        }
    }

    global_destroy();
    return 0;
}
Esempio n. 5
0
int main(){
	struct sockaddr_in serveraddr;
	struct sockaddr_in clientaddr;
	int addrlen;
	int listenfd;

	listenfd = Socket(AF_INET,SOCK_STREAM,0);
	
	bzero(&serveraddr,sizeof(struct sockaddr_in));	
	serveraddr.sin_family = AF_INET;
	serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
	serveraddr.sin_port = htons(PORT);
	
	int optval = 1;
	if(setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&optval,sizeof(optval))==-1){
		close(listenfd);
		handle_err("setsockopt error\n");
	}
	
	Bind(listenfd,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in));
	Listen(listenfd,128);
	
	//忽略可以避免僵尸进程
	//signal(SIGCHLD,SIG_IGN);
	signal(SIGCHLD,handle_sig);

	while(1){
		addrlen = sizeof(struct sockaddr_in);
		int connfd = Accept(listenfd,(struct sockaddr *)&clientaddr,&addrlen);
		pid_t pid = fork();	
		if(pid==0){
			close(listenfd);
			char buf[1024] = {0};
			while(1){
				int ret = Read(connfd,buf,sizeof(buf));
				if(ret<=0){
					break;
				}
				fputs(buf,stdout);
				memset(buf,0,sizeof(buf));
			}	
			close(connfd);
			handle_err("read error\n");
		}else if(pid<0){
			break;
		}
	}
	handle_err("fork error\n");
	close(listenfd);
	return 0;
}
Esempio n. 6
0
int main(){
	struct sockaddr_in clientaddr;
	int sockfd;
	sockfd = socket(AF_INET,SOCK_STREAM,0);
	if(sockfd==-1){
		handle_err("socket error\n");
	}
	bzero(&clientaddr,sizeof(struct sockaddr_in));
	clientaddr.sin_family = AF_INET;
	clientaddr.sin_addr.s_addr = inet_addr(SERVERIP);	
	clientaddr.sin_port = htons(PORT);

	if((connect(sockfd,(struct sockaddr *)&clientaddr,sizeof(struct sockaddr_in)))==-1){
		close(sockfd);
		handle_err("connect error");
	}

	pid_t pid = fork();

	//父进程发送数据
	if(pid>0){
		char send_buf[1024] = {0};
		while(fgets(send_buf,sizeof(send_buf),stdin)!=NULL){
			write(sockfd,send_buf,strlen(send_buf));
			memset(send_buf,0,sizeof(send_buf));
		}
	}else if(pid==0){
		char recv_buf[1024] = {0};
		while(1){
			int len = read(sockfd,recv_buf,sizeof(recv_buf));
			if(len==-1){
				handle_err("read error\n");
			}else if(len==0){
				printf("server close\n");
				break;
			}else{
				fputs(recv_buf,stdout);
				memset(recv_buf,0,sizeof(recv_buf));
			}
		}
		close(sockfd);
		kill(getppid(),SIGUSR1);
	}else{
		close(sockfd);
		handle_err("fork error\n");
	}

	close(sockfd);
}
Esempio n. 7
0
void read_data(int sockfd, int count)
{
    ssize_t n;
    char buf[count];
    struct timeval start;
    struct timeval end;
    float sec, usec, diff;
    int flag = 0;

    for ( ; ; ) {
        while ((n = read(sockfd, buf, count)) > 0) {
            if (n > 0 && flag == 0) {
                // gettimeofday from <sys/time.h>
                gettimeofday(&start, NULL);
                flag = 1;
            }
        }

        if (n == 0 && flag == 1) {
            gettimeofday(&end, NULL);
            sec = end.tv_sec - start.tv_sec;
            usec = end.tv_usec - start.tv_usec;
            diff = sec + usec / 1000000;
            printf("The elapsed time for receiving is %fs\n", diff);
            flag = 0;
        }

        if (n < 0)
            handle_err("read error");
    }
}
Esempio n. 8
0
void read_config(void) {
    FILE *fp = fopen(CONFIG_PATH, "r");
    handle_err(fp == NULL, "can't open config file.");

    char buf[1024];
    int n;

    while (fgets(buf, sizeof(buf), fp)) {
        n = 0;
        while (isspace(buf[n])) ++n;
        if (buf[n] == '\0')
            continue;

        char *p = strchr(buf, '=');
        *p = '\0';
        char *key = buf;
        char *value = p + 1;

        if (!strcmp("SERVER_IP", key)) {
            sscanf(value, "%s", SERVER_IP);
            printf("IP:%s\n", SERVER_IP);
        } else if (!strcmp("SERVER_PORT", key)) {
            sscanf(value, "%hu", &SERVER_PORT);
            printf("PORT:%hu\n", SERVER_PORT);
        } else if (!strcmp("LOG_SIZE", key)) {
            sscanf(value, "%d", &LOG_SIZE);
            printf("LOG_SIZE:%d\n", LOG_SIZE); 
        } else {
             write_log("err: unknown config item, ignored.\n");
        }
    }

    fclose(fp);
}
Esempio n. 9
0
void *pa_malloc(size_t sz, bool is_executable)
{
  int ret = 0;
  void *pret = NULL;
  size_t pagesz = (size_t)sysconf(_SC_PAGESIZE);

  if(pagesz == -1) handle_err("sysconf");
  if((ret = posix_memalign(&pret, pagesz, sz)) != 0) 
    handle_err_code("posix_memalign", ret);

  if(is_executable) {
    if((ret = mprotect(pret,sz,PROT_READ|PROT_WRITE|PROT_EXEC)) != 0)
      handle_err("mprotect");
  }

  return pret;
}
Esempio n. 10
0
    void destroy() {
      if (err_ == 0) return;
      -- err_->refcount;
      if (err_->refcount == 0) {
#ifndef NDEBUG
	if (!err_->handled)
	  handle_err();
#endif
	del();
      }
    }
Esempio n. 11
0
int main(int argc, char const *argv[])
{
    int listenfd, connfd;
    int count;
    pid_t childpid;
    socklen_t clilen;
    struct sockaddr_in cliaddr, servaddr;
    struct sigaction act, oact;
    act.sa_handler = sig_chld;
    act.sa_flags = SA_RESETHAND;

    if (argc != 2) {
        handle_err("usage: server <count>");
    }

    count = atoi(argv[1]);

    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    if (listenfd == -1)
        handle_err("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(SERV_PORT);

    if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 )
        handle_err("binding error");

    if (listen(listenfd, LISTEN_BACKLOG) == -1)
        handle_err("listen error");

    if (sigaction(SIGCHLD, &act, &oact) < 0) {
        handle_err("waitpid error");
    }

    /* call accept, wait for a client */ 
    for ( ; ; ) {
        clilen = sizeof(cliaddr);
        connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen); 
        if (connfd == -1)
            handle_err("accept error");

        if ((childpid = fork()) < 0)
            handle_err("fork error");
        else if (childpid == 0) { /* child process */
            close(listenfd);
            read_data(connfd, count); /* process the request */
            exit(0);
        }

        close(connfd); /* parent closes connected socket */
    }

    exit(EXIT_SUCCESS);
}
Esempio n. 12
0
int main(int argc, char const *argv[])
{
    int sockfd;
    struct sockaddr_in cliaddr, servaddr;

    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd == -1)
        handle_err("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(SERV_PORT);

    if (bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 )
        handle_err("binding error");

    /* process the request */
    str_echo(sockfd, (struct sockaddr *) &cliaddr, sizeof(cliaddr));

    exit(EXIT_SUCCESS);
}
Esempio n. 13
0
void str_write(int sockfd)
{
    ssize_t n;
    char buf[MAXBYTES];

    for ( ; ; ) {
        while ((n = read(sockfd, buf, MAXBYTES)) > 0) {
            write(STDOUT_FILENO, buf, n);
        }

        if (n < 0)
            handle_err("read error");
    }
}
Esempio n. 14
0
void cli_str(int sockfd)
{
    int n, m;
    char sendline[MAXBYTES], recvline[MAXBYTES];

    while ((n = read(STDIN_FILENO, sendline, MAXBYTES)) > 0) {
        if (write(sockfd, sendline, n) == EOF) {
            handle_err("write error to server");
        }

        if ((m = read(sockfd, recvline, MAXBYTES)) > 0)
            write(STDOUT_FILENO, recvline, n);
    }
}
Esempio n. 15
0
int main(int argc, char *argv[])
{
    int sockfd, count;
    struct sockaddr_in servaddr;

    if (argc != 2) 
        handle_err("usage: client <IP address>");

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd == -1)
        handle_err("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);
    servaddr.sin_port = htons(SERV_PORT);

    if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
        handle_err("connecting error");
    
    cli_str(sockfd);
    close(sockfd);
    exit(EXIT_SUCCESS);
}
Esempio n. 16
0
/*
Usage:  ask user input the attribute from stdin, used by add and update
Return: none, directly modify the struct parameter
*/
void get_attr_input(struct name_prtl *pkt)
{
    int n;
    char buf[MAXBYTE];
    char info[] = "Please input the attribute:\n"; /* used for write func */

    write(STDIN_FILENO, info, sizeof(info));
    if ((n = read(STDIN_FILENO, buf, MAXBYTE)) > 0) {
        if ((pkt->data = (char *) malloc(n)) == NULL) {
            handle_err("[Error] get_attr_input -- malloc error");
        }

        pkt->len = n;
        strncpy(pkt->data, buf, n); /* copy the first n bytes */
    }
}
Esempio n. 17
0
void write_log(const char *str) {
    time_t timep;
    char s[30];
    time(&timep);
    strcpy(s, ctime(&timep));
    fprintf(log_fp, "\ntime:%s   things:%s\n", s, str);
    fseek(log_fp, 0, SEEK_END);
    unsigned fsize = ftell(log_fp);

    if (fsize >= LOG_SIZE) {
        fclose(log_fp);
        sprintf(s, "./LOG/log_%d.txt", LOGFILE_CNT++);
        log_fp = fopen(s, "w");
        handle_err(log_fp == NULL, "create log file failed.");
    }
}
Esempio n. 18
0
void str_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)
{
    ssize_t n;
    socklen_t len;
    char buf[MAXLINE];

    for ( ; ; ) {
        len = clilen;
        while ((n = recvfrom(sockfd, buf, MAXLINE, 0, pcliaddr, &len)) > 0) {
            sendto(sockfd, buf, n, 0, pcliaddr, len);
            sendto(sockfd, buf, n, 0, pcliaddr, len);
        }

        if (n < 0)
            handle_err("read error");
    }
}
Esempio n. 19
0
void str_cli(int sockfd,  const struct sockaddr *pservaddr, socklen_t servlen)
{
    int n = 50000;
    int m;
    char sendline[MAXLINE];

    while ((m = sendto(sockfd, sendline, n, 0, pservaddr, servlen)) > 0 
        && n < 100000) {
        n++;
    }

    if (m == -1) {
        if (errno == EMSGSIZE) {
            printf("Largest UDP: %d\n", n);
        }
        
        handle_err("quit");
    }
}
Esempio n. 20
0
int main(int argc, char *argv[])
{
    int sockfd, mss, val;
    socklen_t optlen;
    struct sockaddr_in servaddr;

    if (argc != 2) 
        handle_err("usage: client <IP address>");

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd == -1)
        handle_err("socket error");

    optlen = sizeof(mss);
    val = getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, &optlen);
    if (val == -1) {
        handle_err("getsockopt error");
    } else {
        printf("mss = %d\n", mss);
    }

    mss = 256;
    val = setsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, sizeof(mss));
    if (val == -1) {
        handle_err("getsockopt error");
    } else {
        printf("set mss to %d\n", mss);
    }

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);
    servaddr.sin_port = htons(SERV_PORT);

    if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
        handle_err("connecting error");

    val = getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, &optlen);
    if (val == -1) {
        handle_err("getsockopt error");
    } else {
        printf("mss = %d\n", mss);
    }

    close(sockfd);
    exit(EXIT_SUCCESS);
}
Esempio n. 21
0
//main takes arguments from the commandline
int main(int argc,char*argv[])
{
  GtkWidget*window;
  GtkWidget*button1,*button3,*button4,*button5,*button6,*button7,*button8,*button9,*handle;
  GtkWidget*picture1,*picture2,*label3,*label4,*label5,*label6,*label7,*label8,*label9,*label10,*label11,*label1,*label2;
  GtkWidget*box1,*box2,*box3,*box4,*box5,*box6,*box7,*box8,*box9,*picture;
  GtkWidget*image1,*image2,*image3,*image4,*image5,*image6,*image7,*image8,*image9,*lab1,*lab2,*lab3,*lab4;
  GtkWidget*hbox1,*hbox2,*hbox3,*hbox4,*hbox5,*hbox6,*hbox7,*hbox8,*hbox9,*hbox11;
  GtkWidget*vbox,*vbox1,*notebook,*fbox1,*fbox2,*fbox3,*fbox4,*pict1,*pict2,*pict3,*pict4;
  GdkColor color1,color2,color3;
  GtkWidget*but1,*but2,*but3,*but4;
  GtkWidget*img1,*img2,*img3,*img4;
   gtk_init(&argc,&argv);

   if(!gtk_init_check(&argc,&argv))
     {
       handle_err("FAILED TO INITIALIZE THE GTK LIBRARIES");
     }

    //the following creats a window
     window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
            gtk_window_set_resizable(GTK_WINDOW(window),TRUE);
            gtk_window_set_title(GTK_WINDOW(window),"GOSPEL BROWSER");
            gtk_window_maximize(GTK_WINDOW(window));
            gtk_window_present(GTK_WINDOW(window));
           gtk_container_set_border_width(GTK_CONTAINER(window),0);
      gtk_window_set_icon_from_file(GTK_WINDOW(window),"icon.jpg",NULL);
       g_signal_connect(GTK_OBJECT(window),"destroy",G_CALLBACK(Close_Window),NULL);
 //the following creats entry boxes
  entry1=gtk_entry_new();
  entry2=gtk_entry_new();
  entry3=gtk_entry_new();
  //reading a picture from the desktop
  picture1=gtk_image_new_from_file("picture.jpg");
  picture2=gtk_image_new_from_file("ogo.jpg");
 gtk_widget_set_size_request(picture1,300,100);
//creating entry boxes

  gtk_entry_set_text(GTK_ENTRY(entry1),"http//:");
  gtk_entry_set_text(GTK_ENTRY(entry2),"search");
  gtk_entry_set_text(GTK_ENTRY(entry3),"www.emmanuelTV.com");
 //the lines of code below creats images from stock
 image1=gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
 image2=gtk_image_new_from_stock(GTK_STOCK_CLOSE,GTK_ICON_SIZE_MENU);
 image3=gtk_image_new_from_stock(GTK_STOCK_GO_BACK,GTK_ICON_SIZE_BUTTON);
 image4=gtk_image_new_from_stock(GTK_STOCK_GO_FORWARD,GTK_ICON_SIZE_BUTTON);
 image5=gtk_image_new_from_stock(GTK_STOCK_FIND,GTK_ICON_SIZE_BUTTON);
 image6=gtk_image_new_from_stock(GTK_STOCK_HOME,GTK_ICON_SIZE_BUTTON);
 image7=gtk_image_new_from_file("search.jpg");
 image8=gtk_image_new_from_stock(GTK_STOCK_GO_DOWN,GTK_ICON_SIZE_BUTTON);
 image9=gtk_image_new_from_stock(GTK_STOCK_EXECUTE,GTK_ICON_SIZE_BUTTON);
//creates buttons
 button1=gtk_button_new();
 button2=gtk_button_new();
 button3=gtk_button_new();
 button4=gtk_button_new();
 button5=gtk_button_new();
 button6=gtk_button_new();
 button7=gtk_button_new();
 button8=gtk_button_new();
 button9=gtk_button_new();
 but1=gtk_button_new();
 but2=gtk_button_new();
 but3=gtk_button_new();
 but4=gtk_button_new();

//box creation
 box1=gtk_hbox_new(TRUE,0);
 box2=gtk_hbox_new(TRUE,0);
 box3=gtk_hbox_new(TRUE,0);
 box4=gtk_hbox_new(TRUE,0);
 box5=gtk_hbox_new(TRUE,0);
 box6=gtk_hbox_new(TRUE,0);
 box7=gtk_hbox_new(TRUE,0);
 box8=gtk_hbox_new(TRUE,0);
 box9=gtk_hbox_new(TRUE,0);
//the next lines adds the images to the buttons

  gtk_box_pack_start_defaults(GTK_BOX(box1),image1);
  gtk_container_add(GTK_CONTAINER(button1),box1);
  gtk_widget_show_all(button1);

  gtk_box_pack_start_defaults(GTK_BOX(box2),image2);
  gtk_widget_set_size_request(box2,10,10);
  gtk_container_add(GTK_CONTAINER(button2),box2);
  gtk_widget_show_all(button2);

  gtk_box_pack_start_defaults(GTK_BOX(box3),image3);
    gtk_widget_set_size_request(box3,5,5);
  gtk_container_add(GTK_CONTAINER(button3),box3);
  gtk_widget_show_all(button3);

  gtk_box_pack_start_defaults(GTK_BOX(box4),image4);
  gtk_widget_set_size_request(box4,5,5);
  gtk_container_add(GTK_CONTAINER(button4),box4);
  gtk_widget_show_all(button4);

  gtk_box_pack_start_defaults(GTK_BOX(box5),image5);
  gtk_widget_set_size_request(box5,5,5);
  gtk_container_add(GTK_CONTAINER(button5),box5);
  gtk_widget_show_all(button5);

  gtk_box_pack_start_defaults(GTK_BOX(box6),image6);
  gtk_widget_set_size_request(box6,5,5);

  gtk_container_add(GTK_CONTAINER(button6),box6);
  gtk_widget_show_all(button6);

  gtk_box_pack_start_defaults(GTK_BOX(box7),image7);
   gtk_widget_set_size_request(box7,5,2);

  gtk_container_add(GTK_CONTAINER(button7),box7);
  gtk_widget_show_all(button7);

  gtk_box_pack_start_defaults(GTK_BOX(box8),image8);
   gtk_widget_set_size_request(box8,5,5);

  gtk_container_add(GTK_CONTAINER(button8),box8);
  gtk_widget_show_all(button8);
 
  gtk_box_pack_start_defaults(GTK_BOX(box9),image9);
  gtk_widget_set_size_request(box9,5,5);
  gtk_container_add(GTK_CONTAINER(button9),box9);
  gtk_widget_show_all(button9);
//this creats labels to be added in to the hboxes
 label1=gtk_label_new(" ");
 label2=gtk_label_new(" ");
 label3=gtk_label_new("Gospel");
 label4=gtk_label_new("");
 label5=gtk_label_new(" ");
 label6=gtk_label_new("");
 label7=gtk_label_new(" ");
 label8=gtk_label_new(" ");
 label9=gtk_label_new(" ");
 label10=gtk_label_new(" ");
 label11=gtk_label_new(" ");
 lab1=gtk_label_new(" ");
 lab2=gtk_label_new(" ");
 lab3=gtk_label_new(" ");
 lab4=gtk_label_new(" ");



//color addiotion
 gdk_color_parse("#CA29EF",&color1);
 gdk_color_parse("#29EF2F",&color2);
 gdk_color_parse("#2951EF",&color3);
//the function below changes the color of the labels specified
 gtk_widget_modify_fg(label3,GTK_STATE_NORMAL,&color3);
/*creats hboxes abd vboxes to be added to the window*/
 
 hbox1=gtk_hbox_new(FALSE,0);
 hbox2=gtk_hbox_new(FALSE,0);
 hbox3=gtk_hbox_new(FALSE,0);
 hbox4=gtk_hbox_new(FALSE,3);
 hbox5=gtk_hbox_new(TRUE,0);
 hbox6=gtk_hbox_new(TRUE,0);
 hbox7=gtk_hbox_new(TRUE,0);
 hbox8=gtk_hbox_new(TRUE,0);
 hbox9=gtk_hbox_new(TRUE,0);
 hbox10=gtk_hbox_new(FALSE,0);
 hbox11=gtk_hbox_new(TRUE,0);

 
//vertical boxes
 vbox=gtk_vbox_new(FALSE,0);
 vbox1=gtk_vbox_new(TRUE,0);
//creating event boxes
   fbox1=gtk_hbox_new(TRUE,0);
   fbox2=gtk_hbox_new(TRUE,0);
   fbox3=gtk_hbox_new(TRUE,0);
   fbox4=gtk_hbox_new(TRUE,0);
//crating picutres
pict1=gtk_image_new_from_file("joshua.jpg");
pict2=gtk_image_new_from_file("johnson.jpg");
pict3=gtk_image_new_from_file("chris.jpg");
pict4=gtk_image_new_from_file("Duncan.jpg");
//packing the images into the the event boxes
 
 gtk_box_pack_start_defaults(GTK_BOX(fbox1),pict1);
 gtk_widget_set_size_request(fbox1,65,30);
 gtk_container_add(GTK_CONTAINER(but1),fbox1);
   gtk_widget_show_all(but1);
 gtk_box_pack_start_defaults(GTK_BOX(fbox2),pict2);
  gtk_widget_set_size_request(fbox2,65,30);

 gtk_container_add(GTK_CONTAINER(but2),fbox2);
  gtk_widget_show_all(but2);

 gtk_box_pack_start_defaults(GTK_BOX(fbox3),pict3);
  gtk_widget_set_size_request(fbox3,100,30);
 gtk_container_add(GTK_CONTAINER(but3),fbox3);
   gtk_widget_show_all(but3);

 gtk_box_pack_start_defaults(GTK_BOX(fbox4),pict4);
  gtk_widget_set_size_request(fbox4,100,30);
 gtk_container_add(GTK_CONTAINER(but4),fbox4);
    gtk_widget_show_all(but4);

//the following uses box pack function to add buttons to the hboxes

 gtk_box_pack_start_defaults(GTK_BOX(hbox1),button3);
 g_object_set(button3,"relief",GTK_RELIEF_NONE,NULL);
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),button4);
  g_object_set(button4,"relief",GTK_RELIEF_NONE,NULL);
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),entry1);
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),button5);
  g_object_set(button5,"relief",GTK_RELIEF_NONE,NULL);
  g_signal_connect(GTK_OBJECT(button5),"clicked",G_CALLBACK(button_clicked),"button5");
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),entry2);
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),button6);
  g_object_set(button6,"relief",GTK_RELIEF_NONE,NULL);
   gtk_box_pack_start_defaults(GTK_BOX(hbox1),button9);
  g_object_set(button9,"relief",GTK_RELIEF_NONE,NULL);
 g_signal_connect(GTK_OBJECT(button9),"clicked",GTK_SIGNAL_FUNC(upload_logo),"men_of_God");
 gtk_box_pack_start_defaults(GTK_BOX(hbox1),button8);
 g_object_set(button8,"relief",GTK_RELIEF_NONE,NULL);
  g_signal_connect(GTK_OBJECT(button8),"clicked",GTK_SIGNAL_FUNC(file_chooser),"download");


 gtk_widget_set_size_request(hbox1,800,1);

 gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox1);


  gtk_box_pack_start_defaults(GTK_BOX(hbox9),label11);
 gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox9);

 gtk_box_pack_start_defaults(GTK_BOX(hbox2),label4);
 gtk_box_pack_start_defaults(GTK_BOX(hbox2),picture1);
 gtk_box_pack_start_defaults(GTK_BOX(hbox2),label5);

  
 gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox2);

 gtk_box_pack_start_defaults(GTK_BOX(hbox3),label1);
 gtk_box_pack_start_defaults(GTK_BOX(hbox3),picture2);
 gtk_box_pack_start_defaults(GTK_BOX(hbox3),entry3);
 gtk_box_pack_start_defaults(GTK_BOX(hbox3),button7);
 gtk_box_pack_start_defaults(GTK_BOX(hbox3),label2);
 gtk_box_pack_start_defaults(GTK_BOX(hbox3),label8);
 
 gtk_widget_set_size_request(button7,10,3);
 gtk_widget_set_size_request(hbox3,100,20); 
  g_object_set(button7,"relief",GTK_RELIEF_NONE,NULL);
   g_signal_connect(GTK_OBJECT(button7),"clicked",GTK_SIGNAL_FUNC(button_clicked),"button7");
 gtk_widget_set_size_request(hbox4,100,10);

 gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox3);

 gtk_box_pack_start_defaults(GTK_BOX(hbox4),lab1);
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),lab3);
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),but1);
 g_object_set(but1,"relief",GTK_RELIEF_NONE,NULL);
 g_signal_connect(GTK_OBJECT(but1),"clicked",G_CALLBACK(generals_func),"Joshua");
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),but2);
   g_object_set(but2,"relief",GTK_RELIEF_NONE,NULL);
 g_signal_connect(GTK_OBJECT(but2),"clicked",G_CALLBACK(generals_func),"Johnson");
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),but3);
    g_object_set(but3,"relief",GTK_RELIEF_NONE,NULL);
 g_signal_connect(GTK_OBJECT(but3),"clicked",G_CALLBACK(generals_func),"Chris");
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),but4);
       g_object_set(but4,"relief",GTK_RELIEF_NONE,NULL);
 g_signal_connect(GTK_OBJECT(but4),"clicked",G_CALLBACK(generals_func),"Duncan");
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),lab2);
 gtk_box_pack_start_defaults(GTK_BOX(hbox4),lab4);
 
 gtk_widget_set_size_request(hbox4,100,150);
gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox4);
//the following creats a notebook
 notebook=gtk_notebook_new();
 
           gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook),TRUE);
           gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook),GTK_POS_TOP);

             gtk_box_pack_start_defaults(GTK_BOX(hbox10),button2);
             g_object_set(button2,"relief",GTK_RELIEF_NONE,NULL);
                          

             gtk_box_pack_start_defaults(GTK_BOX(hbox10),label3);

             gtk_box_pack_start_defaults(GTK_BOX(hbox10),button1);
             g_object_set(button1,"relief",GTK_RELIEF_NONE,NULL);
            
               gtk_widget_show_all(hbox10);
           gtk_widget_set_size_request(hbox10,150,35);
             gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,hbox10);
            g_signal_connect(GTK_OBJECT(button1),"clicked",G_CALLBACK(switch_page),(gpointer)notebook);
            g_signal_connect(GTK_OBJECT(button2),"clicked",G_CALLBACK(CloseApp),(gpointer)notebook);
            

      
 gtk_rc_parse("gosple.gtkrc");

//changes the sizes of some widgets
 gtk_widget_set_size_request(entry1,750,27);
 gtk_widget_set_size_request(button3,20,10);
 gtk_widget_set_size_request(button4,20,10);
 gtk_widget_set_size_request(button5,20,10);
 gtk_widget_set_size_request(button6,20,10);
  gtk_widget_set_size_request(button8,20,10);
 gtk_widget_set_size_request(entry3,400,27);
 gtk_widget_set_size_request(entry2,200,27);

 
//adds the notebook to a contiainer
gtk_container_add(GTK_CONTAINER(window),notebook);

gtk_widget_show_all(window);
 gtk_main();
return 0;
}
Esempio n. 22
0
int main(int argc, char *argv[])
{
    int sockfd, hostfd;
    int flags, opt, i, n, m;
    char serv_name[MAXHOSTNAME];
    char port[MAXPORTSIZE];
    char name[MAXNAMESIZE + 1];
    struct name_prtl request;

    // get options
    flags = 0;
    name[0] = '\0';
    while ((opt = getopt(argc, argv, "adlun:")) != -1) {
        switch (opt) {
        case 'l': /* lookup */
            if (flags != 0) {
                fprintf(stderr, "[Error] you should only specify one type of ");
                fprintf(stderr, "operations from add, lookup, delete and update\n");
                exit(EXIT_FAILURE);
            }
            flags = 1;
            break;
        case 'a': /* add */
            if (flags != 0) {
                fprintf(stderr, "[Error] you should only specify one type of ");
                fprintf(stderr, "operations from add, lookup, delete and update\n");
                exit(EXIT_FAILURE);
            }
            flags = 2;
            break;
        case 'd': /* delete */
            if (flags != 0) {
                fprintf(stderr, "[Error] you should only specify one type of ");
                fprintf(stderr, "operations from add, lookup, delete and update\n");
                exit(EXIT_FAILURE);
            }
            flags = 3;
            break;
        case 'u': /* update */
            if (flags != 0) {
                fprintf(stderr, "[Error] you should only specify one type of ");
                fprintf(stderr, "operations from add, lookup, delete and update\n");
                exit(EXIT_FAILURE);
            }
            flags = 4;
            break;
        case 'n': /* name */
            n = strlen(optarg);
            if (n > MAXNAMESIZE) {
                fprintf(stderr, 
                "[Error] the name is too long, its maxsize is %d\n", MAXNAMESIZE);
                exit(EXIT_FAILURE);
            }

            // copy the input string to name[]
            for (i = 0; i < n; i++) {
                name[i] = optarg[i];
            }
            for ( ; i < MAXNAMESIZE + 1; i++) {
                name[i] = '\0';
            }

            break;
        default: /* ? */
            fprintf(stderr, "[Usage] %s [-adlu] [-n name]\n", argv[0]);
            exit(EXIT_FAILURE);
        }
    }

    // check input parameters
    if (flags == 0 || name[0] == '\0') {
        fprintf(stderr, "[Error] missing args\n");
        fprintf(stderr, "[Usage] %s [-adlu] [-n name]\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    if (!((name[0] >= 48 && name[0] <= 57) || (name[0] >= 65 && name[0] <= 90) 
        || (name[0] >= 97 && name[0] <= 122))) {
        fprintf(stderr, "[Error] illegal name\n        ");
        fprintf(stderr, "the name should begin with a letter or a number\n");
        exit(EXIT_FAILURE);
    }

    // open the server config file
    if ((hostfd = open(CONF_FILE, O_RDONLY)) < 0) {
        handle_err("Open config file error");
    }
    if ((m = get_server_info(hostfd, serv_name, port)) == -1) {
        fprintf(stderr, "Error: failed to parse server name and port\n");
        exit(EXIT_FAILURE);
    }

    // connect to name server with timeout
    sockfd = tcp_connect(serv_name, port); /* tcp_connect in func_wrapper */
    if (sockfd == -1) {
        fprintf(stderr, "[Error] failed to connect to the server\n");
        exit(EXIT_FAILURE);
    }

    // initialize the request pkt
    request.protocol = 1;
    request.type = flags;
    strncpy(request.name, name, MAXNAMESIZE + 1);
    if (flags == 1 || flags == 3) {
        request.len = 0;
    } else {
        get_attr_input(&request); /* get the attribute string */
    }
    
    /* client */
    name_service(sockfd, &request); 

    close(sockfd);
    exit(EXIT_SUCCESS);
}
Esempio n. 23
0
int main(){
	struct sockaddr_in serveraddr;
	struct sockaddr_in clientaddr;
	int sockfd;
	int connfd;
	int addrlen;

	sockfd = socket(AF_INET,SOCK_STREAM,0);
	if(sockfd<0){
		handle_err("socket error\n");		
	}

	bzero(&serveraddr,sizeof(struct sockaddr_in));
	serveraddr.sin_family = AF_INET;
	serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
	serveraddr.sin_port = htons(PORT);

	int optval = 1;
	setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&optval,sizeof(optval));

	if(bind(sockfd,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in))==-1){
		close(sockfd);
		handle_err("bind error\n");
	}

	if(listen(sockfd,128)==-1){
		close(sockfd);
		handle_err("listen error\n");
	}

	addrlen = sizeof(struct sockaddr);
	connfd = accept(sockfd,(struct sockaddr *)&clientaddr,&addrlen);
	if(connfd==-1){
		close(sockfd);
		handle_err("accept error\n");
	}
	printf("client %s connected\n",inet_ntoa(clientaddr.sin_addr));
	
	pid_t pid = fork();
	if(pid==0){
		signal(SIGUSR1,handle_sig);
		char send_buf[1024] = {0};
		while(fgets(send_buf,sizeof(send_buf),stdin)!=NULL){
			write(connfd,send_buf,strlen(send_buf));
			memset(send_buf,0,sizeof(send_buf));
		}
	}else if(pid>0){
		char recv_buf[1024] = {0};
		while(1){
			int len = read(connfd,recv_buf,sizeof(recv_buf));
			if(len==-1){
				close(sockfd);
				close(connfd);
				handle_err("read error\n");
			}else if(len==0){
				printf("client close\n");
				break;
			}else{
				fputs(recv_buf,stdout);
				memset(recv_buf,0,sizeof(recv_buf));
			}
		}
	}else{
		close(connfd);
		close(sockfd);
		handle_err("fork error\n");
	}
	kill(pid,SIGUSR1);
	close(connfd);
	close(sockfd);
	return 0;
}
int main(int argc, char *argv[])
{
    int listenfd, connfd, dbfd, itemfd, rservfd, logfd;
    int dflag, iflag, opt, n, i;
    int port = 0;
    pid_t childpid;
    char *database, *nameitem, *logfile;
    socklen_t clilen;
    struct sockaddr_in cliaddr, servaddr;
    struct sigaction act1, oact1, act2, oact2;
    act1.sa_handler = sig_chld;
    act1.sa_flags = SA_RESETHAND;
    act2.sa_handler = sig_int;
    act2.sa_flags = SA_RESETHAND;

    dflag = iflag = 0; /* parameter parer flag, unset at the beginning */
    // parameter parser using getopt
    while ((opt = getopt(argc, argv, "d:i:p:")) != -1) {
        switch (opt) {
        case 'd': /* database file path */
            n = strlen(optarg);

            // copy the input string content to a new string
            if ((database = (char *) malloc(n + 1)) == NULL) {
                handle_err("[Error] main -- malloc error");
            }            
            for (i = 0; i < n; i++) {
                database[i] = optarg[i];
            }
            database[i]  = '\0';
            dflag = 1; /* has been set */
            break;
        case 'i': /* nameindex file path */
            n = strlen(optarg);

            // copy the input string content to a new string
            if ((nameitem = (char *) malloc(n + 1)) == NULL) {
                handle_err("[Error] main -- malloc error");
            }            

            for (i = 0; i < n; i++) {
                nameitem[i] = optarg[i];
            }
            nameitem[i]  = '\0';
            iflag = 1;
            break;
        case 'p': /* server port number */
            port = atoi(optarg);
            if (port < 65535 && port > 1024) {
                fprintf(stderr, "[Error] main -- illegal port number\n");
                exit(EXIT_FAILURE);
            }
            break;
        default: /* ? */
            fprintf(stderr, "[Usage] %s [-d filepath] [-r filepath]\n", argv[0]);
            exit(EXIT_FAILURE);
        }
    }

    if (dflag == 0) { // not input database path
        if (generate_filename(&database, ".db") < 0) {
            fprintf(stderr, "[Error] generate_filename error\n");
            exit(EXIT_FAILURE);
        }
    }

    if (iflag == 0) { // not input name index path
        if (generate_filename(&nameitem, ".index") < 0) {
            fprintf(stderr, "[Error] generate_filename error\n");
            exit(EXIT_FAILURE);
        }
    }

    if (generate_filename(&logfile, ".log") < 0) {
        fprintf(stderr, "[Error] generate_filename error\n");
        exit(EXIT_FAILURE);
    }

    // open needed file
    if ((dbfd = open(database, O_RDWR | O_APPEND | O_CREAT, 
        S_IRUSR | S_IWUSR)) < 0) {
        handle_err("[Error] main -- open or create database file error");
    }

    if ((itemfd = open(nameitem, O_RDWR | O_APPEND | O_CREAT, 
        S_IRUSR | S_IWUSR)) < 0) {
        handle_err("[Error] main -- open or create nameindex table file error");
    }

    if ((rservfd = open(ROUTE_SERVER, O_RDONLY)) < 0) {
        handle_err("[Error] main -- open routeserver config file error");
    }

    if ((logfd = open(logfile, O_RDWR | O_APPEND | O_CREAT, 
        S_IRUSR | S_IWUSR)) < 0) {
        handle_err("[Error] main -- open or create log file error");
    }    

    // initialize the socket and listen to request
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    if (listenfd == -1)
        handle_err("[Error] main -- socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    if (port == 0) {
        port = SERV_PORT;
    }
    servaddr.sin_port = htons(port);

    if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 )
        handle_err("binding error");

    if (listen(listenfd, LISTEN_BACKLOG) == -1)
        handle_err("listen error");

    // signal handler
    if (sigaction(SIGCHLD, &act1, &oact1) < 0) {
        handle_err("sig_chld error");
    }
    if (sigaction(SIGINT, &act2, &oact2) < 0) {
        handle_err("sig_int error");
    }

    /* call accept, wait for a client */ 
    for ( ; ; ) {
        clilen = sizeof(cliaddr);
        connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen);
        if (connfd < 0) {
            if (errno == EINTR) {
                continue;
            } else {
                handle_err("accept error");
            }
        }

        if ((childpid = fork()) < 0)
            handle_err("fork error");
        else if (childpid == 0) { /* child process */
            close(listenfd);
            /* process the request */
            name_server(connfd, dbfd, itemfd, rservfd, logfd, port);
            exit(0);
        }

        close(connfd); /* parent closes connected socket */
    }

    exit(EXIT_SUCCESS);
}
Esempio n. 25
0
    void posib_handle_err() const {
#ifndef NDEBUG
      if (err_ && !err_->handled)
	handle_err();
#endif
    }
Esempio n. 26
0
/*
Usage:  main func after connecting to server, send request, interprate reply 
Return: none
*/
void name_service(int sockfd, struct name_prtl *pkt)
{
    char *data, *str;
    char buf[MAXBYTE];
    int len, n, i;
    struct name_prtl reply;

    /* alloc memory for request pkt, the name_prtl struct can not be send 
       directly: 1) binary type may have different bit order
                 2) unfixed string in the struct
       here we need to transform the struct into a text string
    */
    len = 38 + pkt->len + 1;
    if ((data = (char *) malloc(len)) == NULL) {
        handle_err("[Error] name_service -- malloc error");
    }

    // transform the pkt struct to a text string
    gen_name_pkt(pkt, data);

    // send the text string
    if (write(sockfd, data, len) == -1) {
        handle_err("[Error] name_service -- write error to server");
    }

    // socket read with timeout
    if ((n = read_timeo(sockfd, buf, MAXBYTE, TRANS_TIMEO)) < 0) {
        fprintf(stderr, "[Error] name_service -- read_timeo error");
    } else if (n == 0) {
        fprintf(stderr, "[Error] name_service -- read timeout");
    }

    if (buf[0] != '1') {
        fprintf(stderr, "[Error] name_service -- receive unknown pkt\n");
        return;
    }

    // alloc mem for parsing the pkt
    if ((str = (char *) malloc(n + 1)) == NULL) {
        handle_err("[Error] name_service -- malloc error");
    }
    for (i = 0; i < n; i ++) { /* copy the text data */
        str[i] = buf[i];
    }
    str[i] = '\0';
    
    // initialize the reply pkt structure
    reply.protocol = 1;
    if ((n = parse_name_pkt(&reply, str)) == -1) {
        fprintf(stderr, "[Error] name_service -- fail to parse pkt\n");
        return;
    }

    // check the names of request and reply
    if (strcmp(reply.name, pkt->name) != 0) {
        printf("[Error] name_service -- unmatching reply\n");
        return;
    }

    // print message data get from server
    if (reply.type == 5) {
        printf("[Info] attribute: ");
    } else if (reply.type == 6 || reply.type == 7) {
        printf("[Info] ");
    } else {
        printf("[Error] ");
    }
    printf("%s\n", reply.data);
}