Beispiel #1
0
int main(int argc, char **argv)
{
	if(argc < 3) {
		printf("please input 2 parameter\n");
		return -1;
	}
	
	int sockfd = tcp_connect_server(argv[1], atoi(argv[2]));
	if( -1 == sockfd){
		perror("tcp_connect_server error\n");
		return -1;
	}
	printf("connect to server successful\n");




	pid_t pid = fork();
	if(pid < 0) {
		printf("fork() err!\n");
	} else if(pid > 0) {	//parent

	} else {	//child

		//close(sockfd);

		char	buf[] = { "child ----" };
		while(1) {
			//printf("child\n");

			write(sockfd, buf, sizeof(buf));

			sleep(1);
		}

	}



	char	buf[] = { "parent..." };
	while(1) {



		write(sockfd, buf, sizeof(buf));

		sleep(1);
	}




	
	printf("finished\n");	

	return 0;
}
Beispiel #2
0
int main(int argc, char** argv)
{
    if( argc < 3 )
    {
        printf("please input 2 parameter\n");
        return -1;
    }


    //两个参数依次是服务器端的IP地址、端口号
    int sockfd = tcp_connect_server(argv[1], atoi(argv[2]));
    if( sockfd == -1)
    {
        perror("tcp_connect error ");
        return -1;
    }

    printf("connect to server successful\n");

    struct event_base* base = event_base_new();


    struct event *ev_sockfd = event_new(base, sockfd,
                                        EV_READ | EV_PERSIST,
                                        socket_read_cb, NULL);
    event_add(ev_sockfd, NULL);



    //监听终端输入事件
    struct event* ev_cmd = event_new(base, STDIN_FILENO,
                                      EV_READ | EV_PERSIST, cmd_msg_cb,
                                      (void*)&sockfd);

    event_add(ev_cmd, NULL);



    event_base_dispatch(base);

    printf("finished \n");
    return 0;
}
Beispiel #3
0
int main(int argc, char** argv)
{
    if( argc < 3 )
    {
        printf("please input 2 parameter\n");
        return -1;
    }


    //两个参数依次是服务器端的IP地址、端口号
    int sockfd = tcp_connect_server(argv[1], atoi(argv[2]));
    if( sockfd == -1)
    {
        perror("tcp_connect error ");
        return -1;
    }

    printf("connect to server successful\n");

    struct event_base* base = event_base_new();

    struct bufferevent* bev = bufferevent_socket_new(base, sockfd,
                                                     BEV_OPT_CLOSE_ON_FREE);

    //监听终端输入事件
    struct event* ev_cmd = event_new(base, STDIN_FILENO,
                                      EV_READ | EV_PERSIST, cmd_msg_cb,
                                      (void*)bev);
    event_add(ev_cmd, NULL);

    //当socket关闭时会用到回调参数
    bufferevent_setcb(bev, server_msg_cb, NULL, event_cb, (void*)ev_cmd);
    bufferevent_enable(bev, EV_READ | EV_PERSIST);


    event_base_dispatch(base);

    printf("finished \n");
    return 0;
}