コード例 #1
0
ファイル: echoclient-main.cpp プロジェクト: mahak/heron
int main(int argc, char* argv[])
{
  if (argc < 4) {
    std::cout << "Usage: " << argv[0] << "<host> <port> <local/remote>" << std::endl;
    exit(1);
  }

  NetworkOptions options;
  options.set_host(argv[1]);
  options.set_port(atoi(argv[2]));
  options.set_max_packet_size(1024);
  if (strcmp(argv[3], "local") == 0) {
    options.set_socket_family(PF_UNIX);
    options.set_sin_path("/tmp/__echoserver__");
  } else {
    options.set_socket_family(PF_INET);
  }

  bool perf = false;
  if (argc > 4 && strcmp(argv[4], "perf") == 0)
    perf = true;
  EventLoopImpl ss;
  EchoClient echo_client(&ss, options, perf);
  echo_client.Start();
  ss.loop();
  return 0;
}
コード例 #2
0
 void test_echo_service()
 {
   service_class_thread = nullptr;
   // Create a server on port 12345
   fr::socket::socket_server<fr::socket::server_body<echo_service> > my_echo_server(12345);
   my_echo_server.thread_spawned.connect(boost::bind(&test_client_server::set_service_class_thread, this, _1));
   boost::thread *server_thread = my_echo_server.start();
   // Give the server time to start
   boost::this_thread::yield();
   fr::socket::socket_client echo_client("localhost", 12345);
   std::string expected("Hello, sockets!");
   std::string actual;
   echo_client.streams->stream_out << expected << std::endl;
   getline(echo_client.streams->stream_in, actual);
   //    std::cout << std::endl << "Expected: \"" << expected << "\"" << std::endl;
   //    std::cout << "Actual: \"" << actual << "\"" << std::endl;
   CPPUNIT_ASSERT(expected == actual);
   my_echo_server.shutdown();
   // Poke the echo server so it exits. IRL using blocking reads in
   // your server code opens a sack of pain. For this test, it was
   // a significantly smaller sack of pain than having to deal with
   // select and signals or polling the stream and building the
   // string up that way. No matter how you go about it, there's always
   // a good bit of suck associated with threaded I/O.
   echo_client.streams->stream_out << std::endl;
   if (nullptr == service_class_thread) {
     CPPUNIT_FAIL("Service class thread never signaled");
   }
   service_class_thread->join();
   delete service_class_thread;
   server_thread->join();
 }
コード例 #3
0
uint future_prod(future *fut) 
{
    int i, j;
    j = (int)fut;
    j = echo_client();
    future_set(fut, &j);
    return OK;
}
コード例 #4
0
ファイル: main.cpp プロジェクト: feidegenggao/NetProgram
int main(int argc, char** argv)
{
    if (argc != 3)
    {
        fprintf(stderr, "USAGE:%s serverAddr serverPort\n", argv[0]);
        exit(-1);
    } 
    signal(SIGPIPE, sig_pipe);
    int connport = atoi(argv[2]);

    struct sockaddr_in connaddr;
    connaddr.sin_family = AF_INET;
    inet_pton(AF_INET, argv[1], &(connaddr.sin_addr.s_addr));
    connaddr.sin_port = htons(connport);
    socklen_t connaddrlen = sizeof(connaddr);


    int connnu = 1;
    int connfd[connnu];
    for (int i = 0; i < connnu; i++)
    {
        connfd[i] = socket(AF_INET, SOCK_STREAM, 0);

        struct sockaddr_in clientaddr;
        clientaddr.sin_family = AF_INET;
        if ((inet_aton("192.168.13.200", (in_addr*)&clientaddr.sin_addr.s_addr)) == 0)
        {

        }
        //clientaddr.sin_addr.s_addr = htonl("192.168.13.200");
        clientaddr.sin_port = htons(0);

        int binderror = 0;
        if ( 0 > (binderror = bind(connfd[i], (struct sockaddr*)&clientaddr, sizeof(clientaddr))))
        {
            perror("bind error when port is 0");
        }
        printf("binderror:%d\n", binderror);

        if (connfd[i] == -1)
        {

        }
        if (FAILED == connect(connfd[i], (const struct sockaddr*)&connaddr, connaddrlen))
        {
            perror("connect error.");
            exit(-1);
        }
    }

    echo_client(stdin, connfd[0]);
}
コード例 #5
0
ファイル: udp_echo_client.cpp プロジェクト: Zhanyin/taomee
int main(int argc, char** argv)
{
    if (argc != 3) {
        std::cout << "usage: serv_ip serv_port" << std::endl;
        return 0;
    }

    udp_echo_client echo_client(argv[1], atoi(argv[2]));

    echo_client.start();

    return 0;
}
コード例 #6
0
ファイル: client.c プロジェクト: claxclinton/Networking
int main(int argc, char *argv[])
{
        struct addrinfo *result;
        int sfd;
        int status;
        const char *host;
        const char *port;
        const char *msg;

        if (argc < 3)
        {
                fprintf(stderr, "Usage: %s host port msg\n", argv[0]);
                exit(__LINE__);
        }

        host = argv[1];
        port = argv[2];
        msg = argv[3];
        
        /* Get address information on specified host and port. */
        status = get_server_addr_info(host, port, &result);
        if (status != 0)
        {
                exit(status);
        }

        /* Go through each addrinfo and try to open a socket an
         * connect to it. Either use the first one or exit.
         */
        status = get_connected_socket(result, &sfd);
        if (status != 0)
        {
                exit(status);
        }
        freeaddrinfo(result);

        /* Send specified message as a separat datagram and read
         * the response from the server.
         */
        status = echo_client(sfd, msg);
        if (status != 0)
        {
                exit(status);
        }

        return 0;
}
コード例 #7
0
ファイル: main.c プロジェクト: fatzero/acl
static void fiber_accept(void *ctx)
{
	ACL_VSTREAM *sstream = (ACL_VSTREAM *) ctx;

	for (;;) {
		ACL_VSTREAM *cstream = acl_vstream_accept(sstream, NULL, 0);
		if (cstream == NULL) {
			printf("acl_vstream_accept error %s\r\n",
				acl_last_serror());
			break;
		}

		printf("accept one\r\n");
		echo_client(cstream);
	}

	acl_vstream_close(sstream);
}
コード例 #8
0
int main()
{
	int socketfd[5];
	int ret;
	int i;
	
	for (i=0; i<5; i++) {
		socketfd[i] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
		if (socketfd[i] < 0) {
			ERR_EXIT("socket");
		}

		struct sockaddr_in serveraddr;
		serveraddr.sin_family = AF_INET;
		serveraddr.sin_port = htons(5188);
		serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");


		ret = connect(socketfd[i], (const struct sockaddr *)&serveraddr,
										  (socklen_t)sizeof(serveraddr));
		if (ret < 0) {
			ERR_EXIT("connect");
		}

		struct sockaddr_in localaddr;
		socklen_t addrlen = sizeof(localaddr);
		//int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
		ret = getsockname(socketfd[i], (struct sockaddr *)&localaddr, &addrlen);
		if (ret < 0)
			exit(EXIT_FAILURE);
		printf("local ip address: %s, local port:%d\n", inet_ntoa(localaddr.sin_addr), ntohs(localaddr.sin_port));

	}

	echo_client(socketfd[0]);

	return 0;
}
コード例 #9
0
ファイル: test.c プロジェクト: Agostin/csipsimple
int test_inner(void)
{
    pj_caching_pool caching_pool;
    const char *filename;
    int line;
    int rc = 0;

    mem = &caching_pool.factory;

    pj_log_set_level(3);
    pj_log_set_decor(param_log_decor);

    rc = pj_init();
    if (rc != 0) {
	app_perror("pj_init() error!!", rc);
	return rc;
    }
    
    //pj_dump_config();
    pj_caching_pool_init( &caching_pool, NULL, 0 );

#if INCLUDE_ERRNO_TEST
    DO_TEST( errno_test() );
#endif

#if INCLUDE_EXCEPTION_TEST
    DO_TEST( exception_test() );
#endif

#if INCLUDE_OS_TEST
    DO_TEST( os_test() );
#endif

#if INCLUDE_RAND_TEST
    DO_TEST( rand_test() );
#endif

#if INCLUDE_LIST_TEST
    DO_TEST( list_test() );
#endif

#if INCLUDE_POOL_TEST
    DO_TEST( pool_test() );
#endif

#if INCLUDE_POOL_PERF_TEST
    DO_TEST( pool_perf_test() );
#endif

#if INCLUDE_STRING_TEST
    DO_TEST( string_test() );
#endif
    
#if INCLUDE_FIFOBUF_TEST
    DO_TEST( fifobuf_test() );
#endif

#if INCLUDE_RBTREE_TEST
    DO_TEST( rbtree_test() );
#endif

#if INCLUDE_HASH_TEST
    DO_TEST( hash_test() );
#endif

#if INCLUDE_TIMESTAMP_TEST
    DO_TEST( timestamp_test() );
#endif

#if INCLUDE_ATOMIC_TEST
    DO_TEST( atomic_test() );
#endif

#if INCLUDE_MUTEX_TEST
    DO_TEST( mutex_test() );
#endif

#if INCLUDE_TIMER_TEST
    DO_TEST( timer_test() );
#endif

#if INCLUDE_SLEEP_TEST
    DO_TEST( sleep_test() );
#endif

#if INCLUDE_THREAD_TEST
    DO_TEST( thread_test() );
#endif

#if INCLUDE_SOCK_TEST
    DO_TEST( sock_test() );
#endif

#if INCLUDE_SOCK_PERF_TEST
    DO_TEST( sock_perf_test() );
#endif

#if INCLUDE_SELECT_TEST
    DO_TEST( select_test() );
#endif

#if INCLUDE_UDP_IOQUEUE_TEST
    DO_TEST( udp_ioqueue_test() );
#endif

#if PJ_HAS_TCP && INCLUDE_TCP_IOQUEUE_TEST
    DO_TEST( tcp_ioqueue_test() );
#endif

#if INCLUDE_IOQUEUE_PERF_TEST
    DO_TEST( ioqueue_perf_test() );
#endif

#if INCLUDE_IOQUEUE_UNREG_TEST
    DO_TEST( udp_ioqueue_unreg_test() );
#endif

#if INCLUDE_ACTIVESOCK_TEST
    DO_TEST( activesock_test() );
#endif

#if INCLUDE_FILE_TEST
    DO_TEST( file_test() );
#endif

#if INCLUDE_SSLSOCK_TEST
    DO_TEST( ssl_sock_test() );
#endif

#if INCLUDE_ECHO_SERVER
    //echo_server();
    //echo_srv_sync();
    udp_echo_srv_ioqueue();

#elif INCLUDE_ECHO_CLIENT
    if (param_echo_sock_type == 0)
        param_echo_sock_type = pj_SOCK_DGRAM();

    echo_client( param_echo_sock_type, 
                 param_echo_server, 
                 param_echo_port);
#endif

    goto on_return;

on_return:

    pj_caching_pool_destroy( &caching_pool );

    PJ_LOG(3,("test", ""));
 
    pj_thread_get_stack_info(pj_thread_this(), &filename, &line);
    PJ_LOG(3,("test", "Stack max usage: %u, deepest: %s:%u", 
	              pj_thread_get_stack_max_usage(pj_thread_this()),
		      filename, line));
    if (rc == 0)
	PJ_LOG(3,("test", "Looks like everything is okay!.."));
    else
	PJ_LOG(3,("test", "Test completed with error(s)"));
    
    pj_shutdown();
    
    return 0;
}