Ejemplo n.º 1
0
void init()
{
	loop = uv_default_loop();

	uv_tcp_t server;
	uv_tcp_init(loop, &server);

	struct sockaddr_in bind_addr = uv_ip4_addr("127.0.0.1", 6000);
	uv_tcp_bind(&server, bind_addr);
	int r = uv_listen((uv_stream_t*)&server, 128, on_new_connection);
	if (r) {
		//fprintf(stderr, "Listen error %s\n", uv_err_name(uv_last_error(loop)));
		//return 1;
	}
	
}
Ejemplo n.º 2
0
static void start_server(void) {
	struct sockaddr_in addr;
	int r;

	TEST_ASSERT(0 == uv_ip4_addr("127.0.0.1", 1234, &addr));

	r = uv_tcp_init(uv_default_loop(), &server);
	TEST_ASSERT(r == 0);

	r = uv_tcp_bind(&server, (const struct sockaddr*) &addr, 0);
	TEST_ASSERT(r == 0);

	r = uv_listen((uv_stream_t*)&server, 128, connection_cb);
	TEST_ASSERT(r == 0);

}
Ejemplo n.º 3
0
UvTcpSocket* UvTcpSocket::createUvTcpSokcet(
	LibuvUsageEnvironment* env, 
	string szAddr, 
	int port)
{
	int ret = 0;
	do 
	{
		uv_loop_t* uv_loop = (uv_loop_t*)env->TaskScheduler()->loopHandle();
		ASSERT(uv_loop);
		if(!uv_loop){
			LOG_ERROR("create loop error\r\n");
			ret = -1;
			break;
		}

		struct sockaddr_in addr;

		ret = uv_ip4_addr(szAddr.c_str(),port,&addr);
		ASSERT(ret == 0);
		if (ret){
			LOG_ERROR("get ip error\r\n");
			break;
		}

		uv_tcp_t* tcp_stream = (uv_tcp_t*)malloc(sizeof uv_tcp_t);
		ret = uv_tcp_init(uv_loop, tcp_stream);
		ASSERT(ret == 0);
		if(ret){
			LOG_ERROR("create server socket error\r\n");
			break;
		}

		ret = uv_tcp_bind(tcp_stream,(const sockaddr*)&addr,0);
		if (ret)
		{
			LOG_ERROR("bind error \r\n");
			break;
		}

		UvTcpSocket* tcp = new UvTcpSocket(env, tcp_stream);
		return tcp;
	}while(0);

	LOG_ERROR("Create uv socket error \r\n");
	return NULL;
}
Ejemplo n.º 4
0
static int ipc_helper(int listen_after_write) {
  /*
   * This is launched from test-ipc.c. stdin is a duplex channel that we
   * over which a handle will be transmitted. In this initial version only
   * data is transfered over the channel. XXX edit this comment after handle
   * transfer is added.
   */
  
  uv_write_t write_req;
  int r;
  uv_buf_t buf;

  r = uv_pipe_init(uv_default_loop(), &channel, 1);
  ASSERT(r == 0);

  uv_pipe_open(&channel, 0);

  r = uv_tcp_init(uv_default_loop(), &tcp_server);
  ASSERT(r == 0);

  r = uv_tcp_bind(&tcp_server, uv_ip4_addr("0.0.0.0", TEST_PORT));
  ASSERT(r == 0);

  if (!listen_after_write) {
    r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection);
    ASSERT(r == 0);
  }

  buf = uv_buf_init("hello\n", 6);
  r = uv_write2(&write_req, (uv_stream_t*)&channel, &buf, 1,
      (uv_stream_t*)&tcp_server, NULL);
  ASSERT(r == 0);

  if (listen_after_write) {
    r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection);
    ASSERT(r == 0);
  }

  r = uv_run(uv_default_loop());
  ASSERT(r == 0);

  ASSERT(connection_accepted == 1);
  ASSERT(close_cb_called == 3);

  return 0;
}
Ejemplo n.º 5
0
void ServerSocket::Listen(uv_loop_t* loop, int port) {
	uv_tcp_init(loop, getSocket());

	// Loby port 8124
	struct sockaddr_in lobby_addr = uv_ip4_addr("0.0.0.0", port);
	uv_tcp_bind(getSocket(), lobby_addr);

	getSocket()->data = this;

	int result = uv_listen((uv_stream_t*)getSocket(), 128, on_new_connection);
	if (result) {
		OnListeningError ();

		cerr << "Lobby server could not listen\n" << uv_err_name(uv_last_error(loop));
	}
	else OnListening();
}
Ejemplo n.º 6
0
int uv__tcp_connect(uv_connect_t* req,
                    uv_tcp_t* handle,
                    struct sockaddr_in address,
                    uv_connect_cb cb) {
  uv_loop_t* loop = handle->loop;
  int addrsize = sizeof(struct sockaddr_in);
  BOOL success;
  DWORD bytes;

  if (handle->flags & UV_HANDLE_BIND_ERROR) {
    uv__set_sys_error(loop, handle->bind_error);
    return -1;
  }

  if (!(handle->flags & UV_HANDLE_BOUND) &&
      uv_tcp_bind(handle, uv_addr_ip4_any_) < 0)
    return -1;

  uv_req_init(loop, (uv_req_t*) req);
  req->type = UV_CONNECT;
  req->handle = (uv_stream_t*) handle;
  req->cb = cb;
  memset(&req->overlapped, 0, sizeof(req->overlapped));

  success = pConnectEx(handle->socket,
                       (struct sockaddr*) &address,
                       addrsize,
                       NULL,
                       0,
                       &bytes,
                       &req->overlapped);

  if (UV_SUCCEEDED_WITHOUT_IOCP(success)) {
    /* Process the req without IOCP. */
    handle->reqs_pending++;
    uv_insert_pending_req(loop, (uv_req_t*)req);
  } else if (UV_SUCCEEDED_WITH_IOCP(success)) {
    /* The req will be processed with IOCP. */
    handle->reqs_pending++;
  } else {
    uv__set_sys_error(loop, WSAGetLastError());
    return -1;
  }

  return 0;
}
Ejemplo n.º 7
0
void TCPSocket::bind(const net::Address& address, unsigned flags) 
{
    TraceLS(this) << "Binding on " << address << endl;
    init();
    int r;
    switch (address.af()) {
    case AF_INET:
        r = uv_tcp_bind(ptr<uv_tcp_t>(), address.addr(), flags);
        break;
    //case AF_INET6:
    //    r = uv_tcp_bind6(ptr<uv_tcp_t>(), *reinterpret_cast<const sockaddr_in6*>(address.addr()));
    //    break;
    default:
        throw std::runtime_error("Unexpected address family");
    }
    if (r) setAndThrowError("TCP bind failed", r);
}
Ejemplo n.º 8
0
static void start_server(uv_loop_t* loop, uv_tcp_t* handle) {
  struct sockaddr_in addr;
  int r;

  ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));

  r = uv_tcp_init(loop, handle);
  ASSERT(r == 0);

  r = uv_tcp_bind(handle, &addr);
  ASSERT(r == 0);

  r = uv_listen((uv_stream_t*)handle, 128, connection_cb);
  ASSERT(r == 0);

  uv_unref((uv_handle_t*)handle);
}
Ejemplo n.º 9
0
H_CONNECTION KUVSocket::Listen(LPCSTR szAddress, UINT nPort)
{
	H_CONNECTION ret = INVALID_HANDLER;

	if (!szAddress)
	{
		sprintf_s(g_ErrorMsg, "KUVSocket::Listen Fail, the address is empty\n%s", g_ErrorMsg);
		return ret;
	}

	/*hostent* host = gethostbyname(szAddress);
	if (!host)
	{
		sprintf_s(ErrorMsg, "KUVSocket::Listen Fail, get host Error, the szAddress is %s", szAddress);
		return ret;
	}

	struct sockaddr_in addrBind;
	addrBind.sin_family = AF_INET;
	memcpy(&addrBind.sin_addr, host->h_addr_list[0], sizeof(in_addr));
	addrBind.sin_port = htons(nPort);*/
	struct sockaddr_in addrBind = uv_ip4_addr(szAddress, nPort);

	uv_tcp_t* pListen = NULL;
	pListen = CreateSocket(ret);
	if (!pListen)
	{
		sprintf_s(g_ErrorMsg, "KUVSocket::Listen Fail, create socket Error\n%s", g_ErrorMsg);
		return ret;
	}

	m_nError = uv_tcp_bind(pListen, addrBind);
	if (m_nError)
	{
		ReleaseSocket(ret);
		return ret;
	}

	m_nError = uv_listen((uv_stream_t*)pListen, SOMAXCONN, OnConnectionIncoming);
	if (m_nError)
	{
		return ret;
	}

	return ret;
}
Ejemplo n.º 10
0
static int tcp_listener(int port) {
  struct sockaddr_in addr = uv_ip4_addr("0.0.0.0", port);
  struct sockaddr sockname;
  int namelen = sizeof(sockname);
  char ip[20];
  int r;

  r = uv_tcp_init(loop, &tcpServer);
  if (r) {
    fprintf(stderr, "Socket creation error\n");
    return 1;
  }

  r = uv_tcp_bind(&tcpServer, addr);
  if (r) {
    fprintf(stderr, "Bind error\n");
    return 1;
  }

  r = uv_listen((uv_stream_t*)&tcpServer, 128, on_connection);
  if (r) {
    fprintf(stderr, "Listen error\n");
    return 1;
  }

  memset(&sockname, -1, sizeof sockname);

  r = uv_getsockname((uv_handle_t*)&tcpServer, &sockname, &namelen);
  if (r != 0) {
    fprintf(stderr, "uv_getsockname error (listening) %d\n",
        uv_last_error(loop).code);
  }
  ASSERT(r == 0);

  r = uv_ip4_name((struct sockaddr_in*)&sockname, ip, 20);
  ASSERT(r == 0);
  ASSERT(ip[0] == '0');
  ASSERT(ip[1] == '.');
  ASSERT(ip[2] == '0');
  printf("sockname = %s\n", ip);

  getsocknamecount++;

  return 0;
}
Ejemplo n.º 11
0
int ipc_helper_tcp_connection() {
  /*
   * This is launched from test-ipc.c. stdin is a duplex channel that we
   * over which a handle will be transmitted.
   */

  int r;
  struct sockaddr_in addr;

  r = uv_pipe_init(uv_default_loop(), &channel, 1);
  ASSERT(r == 0);

  uv_pipe_open(&channel, 0);

  ASSERT(uv_is_readable((uv_stream_t*)&channel));
  ASSERT(uv_is_writable((uv_stream_t*)&channel));
  ASSERT(!uv_is_closing((uv_handle_t*)&channel));

  r = uv_tcp_init(uv_default_loop(), &tcp_server);
  ASSERT(r == 0);

  r = uv_tcp_bind(&tcp_server, uv_ip4_addr("0.0.0.0", TEST_PORT));
  ASSERT(r == 0);

  r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection_tcp_conn);
  ASSERT(r == 0);

  /* Make a connection to the server */
  r = uv_tcp_init(uv_default_loop(), &conn.conn);
  ASSERT(r == 0);

  addr = uv_ip4_addr("127.0.0.1", TEST_PORT);
  r = uv_tcp_connect(&conn.conn_req, (uv_tcp_t*)&conn.conn, addr, connect_child_process_cb);
  ASSERT(r == 0);

  r = uv_run(uv_default_loop());
  ASSERT(r == 0);

  ASSERT(tcp_conn_read_cb_called == 1);
  ASSERT(tcp_conn_write_cb_called == 1);
  ASSERT(close_cb_called == 4);

  MAKE_VALGRIND_HAPPY();
  return 0;
}
Ejemplo n.º 12
0
static int tcp_bind(lua_State* L) {
  struct sockaddr_in addr;
  const char* host;
  tcp_obj* self;
  int port;
  int r;

  self = luaL_checkudata(L, 1, "uv.tcp");
  host = luaL_checkstring(L, 2);
  port = luaL_checkint(L, 3);

  addr = uv_ip4_addr(host, port);

  r = uv_tcp_bind(&self->handle, addr);
  lua_pushinteger(L, r);

  return 1;
}
Ejemplo n.º 13
0
static void start_server() {
  struct sockaddr_in addr = uv_ip4_addr("0.0.0.0", TEST_PORT);
  uv_tcp_t* server = (uv_tcp_t*)malloc(sizeof *server);
  int r;

  ASSERT(server != NULL);

  r = uv_tcp_init(server);
  ASSERT(r == 0);
  ASSERT(uv_counters()->tcp_init == 1);
  ASSERT(uv_counters()->handle_init == 1);

  r = uv_tcp_bind(server, addr);
  ASSERT(r == 0);

  r = uv_tcp_listen(server, 128, connection_cb);
  ASSERT(r == 0);
}
Ejemplo n.º 14
0
void listen_scgi_server(struct scgi_server s)
{
    int uv_errno, i;
    uv_tcp_t tcp;

    /* initialize tcp socket and bind it to prepared addresses */
    uv_tcp_init(s.loop, &tcp);
    for (i=0; i<s.nbind_addrs; i++)
        uv_tcp_bind(&tcp, s.bind_addrs[i]);

    tcp.data = (void *) &s;  /* pack scgi_server */

    uv_errno = uv_listen((uv_stream_t *) &tcp, s.max_conn, on_connect);
    if (uv_errno)
        on_connect_error(s.loop, uv_errno);
    else
        uv_run(s.loop, UV_RUN_DEFAULT);
}
Ejemplo n.º 15
0
/* _http_start(): start http server.
*/
static void
_http_start(u2_http* htp_u)
{
  struct sockaddr_in add_u;

  uv_tcp_init(u2L, &htp_u->wax_u);

  memset(&add_u, 0, sizeof(add_u));
  add_u.sin_family = AF_INET;
  add_u.sin_addr.s_addr = INADDR_ANY;

  /*  Try ascending ports.
  */
  while ( 1 ) {
    add_u.sin_port = htons(htp_u->por_w);

    if ( 0 != uv_tcp_bind(&htp_u->wax_u, add_u)  ) {
      uv_err_t las_u = uv_last_error(u2L);

      if ( UV_EADDRINUSE == las_u.code ) {
        htp_u->por_w++;
        continue;
      }
      else {
        uL(fprintf(uH, "http: bind: %s\n", uv_strerror(las_u)));
      }
    }
    if ( 0 != uv_listen((uv_stream_t*)&htp_u->wax_u, 16, _http_listen_cb) ) {
      uv_err_t las_u = uv_last_error(u2L);

      if ( UV_EADDRINUSE == las_u.code ) {
        htp_u->por_w++;
        continue;
      }
      else {
        uL(fprintf(uH, "http: listen: %s\n", uv_strerror(las_u)));
      }
    }
    uL(fprintf(uH, "http: live (%s) on %d\n",
                   (u2_yes == htp_u->sec) ? "\"secure\"" : "insecure",
                   htp_u->por_w));
    break;
  }
}
Ejemplo n.º 16
0
/* _http_start(): start http server.
*/
static void
_http_start(u3_http* htp_u)
{
  struct sockaddr_in add_u;

  uv_tcp_init(u3L, &htp_u->wax_u);

  memset(&add_u, 0, sizeof(add_u));
  add_u.sin_family = AF_INET;
  add_u.sin_addr.s_addr = INADDR_ANY;

  /*  Try ascending ports.
  */
  while ( 1 ) {
    add_u.sin_port = htons(htp_u->por_w);

    int ret;
    if ( 0 != (ret = uv_tcp_bind(&htp_u->wax_u, (const struct sockaddr*) & add_u, 0))  ) {

      if ( UV_EADDRINUSE == ret ) {
        htp_u->por_w++;
        continue;
      }
      else {
        uL(fprintf(uH, "http: bind: %s\n", uv_strerror(ret)));
      }
    }
    if ( 0 != (ret = uv_listen((uv_stream_t*)&htp_u->wax_u, 16, _http_listen_cb)) ) {
      if ( UV_EADDRINUSE == ret ) {
        htp_u->por_w++;
        continue;
      }
      else {
        uL(fprintf(uH, "http: listen: %s\n", uv_strerror(ret)));
      }
    }
#if 0
    uL(fprintf(uH, "http: live (%s) on %d\n",
                   (c3y == htp_u->sec) ? "\"secure\"" : "insecure",
                   htp_u->por_w));
#endif
    break;
  }
}
Ejemplo n.º 17
0
Archivo: term.c Proyecto: laanwj/urbit
void
u3_term_io_talk(void)
{
  struct sockaddr_in add_u;
  u3_utel* tel_u = &u3_Host.tel_u;

  uv_tcp_init(u3L, &tel_u->uty_t.wax_u);
  tel_u->por_s = 10023;

  memset(&add_u, 0, sizeof(add_u));
  add_u.sin_family = AF_INET;
  add_u.sin_addr.s_addr = htonl(INADDR_LOOPBACK);

  /*  Try ascending ports.
  */
  while ( 1 ) {
    add_u.sin_port = htons(tel_u->por_s);

    c3_w ret ;
    if ( 0 != (ret = uv_tcp_bind(&tel_u->uty_t.wax_u, (const struct sockaddr*) & add_u, 0))  ) {
      if ( UV_EADDRINUSE == ret ) {
        tel_u->por_s++;
        continue;
      }
      else {
        uL(fprintf(uH, "term: bind: %s\n", uv_strerror(ret)));
      }
    }
    c3_w ret_w;
    if ( 0 != (ret_w = uv_listen((uv_stream_t*)&tel_u->uty_t.wax_u,
                               16, _term_listen_cb)) )
    {
      if ( UV_EADDRINUSE == ret_w ) {
        tel_u->por_s++;
        continue;
      }
      else {
        uL(fprintf(uH, "term: listen: %s\n", uv_strerror(ret_w)));
      }
    }
    uL(fprintf(uH, "term: live on %d\n", tel_u->por_s));
    break;
  }
}
Ejemplo n.º 18
0
int main() {
  static const int kBacklog = 128;

  uv_loop_t* loop;
  struct sockaddr_in addr;

  loop = uv_default_loop();

  CHECK(uv_tcp_init(loop, &server));
  CHECK(uv_ip4_addr("0.0.0.0", 9000, &addr));
  CHECK(uv_tcp_bind(&server, (struct sockaddr*) &addr, 0));
  CHECK(uv_listen((uv_stream_t*) &server, kBacklog, connection_cb));

  fprintf(stderr, "Listening on 0.0.0.0:9000\n");

  CHECK(uv_run(loop, UV_RUN_DEFAULT));

  return 0;
}
Ejemplo n.º 19
0
int tcp_bind(uv_tcp_t *handle, struct sockaddr *addr)
{
	unsigned flags = UV_UDP_REUSEADDR;
	if (addr->sa_family == AF_INET6) {
		flags |= UV_UDP_IPV6ONLY;
	}
	int ret = uv_tcp_bind(handle, addr, flags);
	if (ret != 0) {
		return ret;
	}

	ret = uv_listen((uv_stream_t *)handle, 16, tcp_accept);
	if (ret != 0) {
		return ret;
	}

	handle->data = NULL;
	return 0;
}
Ejemplo n.º 20
0
int main( void )
{
    sqlite3 *db;
    struct sockaddr_in addr = uv_ip4_addr( "127.0.0.1", 9050 );
    int ret = 0;
    uv_tcp_t listener;
    uv_loop_t *loop;
    ret = sqlite3_open( "data.db", &db );
    if ( ret != 0 ) {
        printf( "Open SQLite Database Failed\n" );
        return -1;
    }
    loop = uv_default_loop();
    uv_tcp_init( loop, &listener );
    listener.data = db;
    uv_tcp_bind( &listener, addr );
    uv_listen( ( uv_stream_t *) &listener, 1 , conn_done );
    uv_run( loop, UV_RUN_DEFAULT );
}
Ejemplo n.º 21
0
Archivo: utb001.c Proyecto: dmh2000/utb
int main(int argc,char *argv[])
{
	uv_loop_t  *loop = uv_default_loop();
	int         status;
	uv_tcp_t    server;
	int         port;

#ifdef _WIN32
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF);
#endif

	if (argc < 4) {
		usage();
		return 0;
	}
	status = sscanf(argv[1],"%d",&port);
	if (status != 1) {
		usage();
		printf("invalid telnet port number : %s\n",argv[1]);
		return 1;
	}
	utb_server_data.udp_ipaddr = argv[2];
	status = sscanf(argv[3],"%d",&utb_server_data.udp_port);
	if(status != 1) {
		usage();
		printf("invalid udp port number : %s\n",argv[3]);
		return 1;
	}

	uv_tcp_init(loop,&server);

	struct sockaddr_in bind_addr = uv_ip4_addr("0.0.0.0",port);

	status = uv_tcp_bind(&server,bind_addr);
	assert(status == 0);

	status = uv_listen((uv_stream_t*)&server,1,utb_on_connection);
	assert(status == 0);

	server.data = &utb_server_data;

	return uv_run(loop,UV_RUN_DEFAULT);
}
Ejemplo n.º 22
0
int
main(int argc, char **argv)
{
     loop = uv_default_loop();

     struct sockaddr_in addr;
     uv_ip4_addr("0.0.0.0", 3000, &addr);

     uv_tcp_init(loop, &server);
     uv_tcp_bind(&server, (const struct sockaddr*)&addr, 0);

     int r = uv_listen((uv_stream_t *)&server, 128, on_connection);

     if (r) {
	  /* error */
     }

     return uv_run(loop, UV_RUN_DEFAULT);
}
Ejemplo n.º 23
0
int main() {
  loop = uv_default_loop();

  uv_tcp_t server;
  uv_tcp_init(loop, &server);

  struct sockaddr_in bind_addr;
  int r = uv_ip4_addr("0.0.0.0", 7000, &bind_addr);
  assert(!r);
  uv_tcp_bind(&server, (struct sockaddr*)&bind_addr);

  r = uv_listen((uv_stream_t*) &server, 128 /*backlog*/, connection_cb);
  if (r) ERROR("listen error", r)

  fprintf(stderr, "Listening on localhost:7000\n");

  uv_run(loop, UV_RUN_DEFAULT);
  return 0;
}
Ejemplo n.º 24
0
int ws_listen(ws_server_t *ptr, uv_loop_t *loop, int port, ws_malloc_connect cb, void *cb_obj)
{
	ptr->loop = loop;
	ptr->port = port;

	ptr->cb.cb_malloc = cb;
	ptr->cb.obj_malloc = cb_obj;

	uv_tcp_init(ptr->loop, &ptr->server);
	ptr->server.data = ptr;

	struct sockaddr_in addr;
	uv_ip4_addr("0.0.0.0", port, &addr);
	uv_tcp_bind(&ptr->server, (const struct sockaddr*)&addr, 0);

	uv_listen((uv_stream_t *)(&ptr->server), 1000, cb_connection);

	return 0;
}
Ejemplo n.º 25
0
int main (int argc, char** argv)
{
	int r;
	server_param = parse_arguments (argc, argv);
	LOG ("Extracting data ...");
	training_set = server_extract_data (server_param);
	LOG ("Learning ...");
	compile_training_set (training_set);
	factors = learn (training_set, server_param->model);
	factors_backup = copy_learned_factors (factors);
	LOG ("Learning completed");
	complete = malloc(20 *sizeof(int));
	memset(complete,0,20 *sizeof(int));
	//parser_settings.on_headers_complete = on_headers_complete;
	parser_settings.on_url = on_url;
	parser_settings.on_header_value = on_value;
	uv_loop = uv_default_loop();

	r = uv_tcp_init (uv_loop, &server);
	CHECK (r, "bind");

	struct sockaddr_in address = uv_ip4_addr ("0.0.0.0", server_param->port);

	r = uv_tcp_bind (&server, address);
	CHECK (r, "bind");
	uv_listen ( (uv_stream_t*) &server, 128, on_connect);

	LOGF ("listening on port %u", server_param->port);
    	uv_timer_t timer;
    	r = uv_timer_init(uv_default_loop(), &timer);
    	assert(r == 0);
   	r = uv_timer_start(&timer, timer_cb, 10000, 10000);
    	assert(r == 0);
	
  	r = uv_mutex_init(&factors_mutex);
  	assert(r == 0);
  	r = uv_mutex_init(&factors_backup_mutex);
  	assert(r == 0);
  	r = uv_mutex_init(&tset_mutex);
  	assert(r == 0);
	uv_run (uv_loop);
}
Ejemplo n.º 26
0
Archivo: udp_clt.c Proyecto: apk/udpmob
static void make_server (int port, int sel) {
   struct clt *clt = malloc (sizeof (struct clt));

   uv_tcp_init (loop, &clt->server);
   clt->server.data = clt;

   /* Set up a listener and start a new machine for each
    * incoming connection. (I'm not going into stdin/out
    * right now, libuv isn't scary but...)
    */
   struct sockaddr_in bind_addr;
   uv_ip4_addr ("0.0.0.0", port, &bind_addr);
   uv_tcp_bind (&clt->server, (struct sockaddr *)&bind_addr, 0);
   int r = uv_listen ((uv_stream_t*) &clt->server, 128, on_new_connection);
   if (r) {
      fprintf (stderr, "Listen error %s\n",
               uv_err_name (r));
      exit (1);
   }
}
Ejemplo n.º 27
0
Archivo: rbuv_tcp.c Proyecto: rbuv/rbuv
VALUE rbuv_tcp_bind(VALUE self, VALUE ip, VALUE port) {
  const char *uv_ip;
  int uv_port;
  rbuv_tcp_t *rbuv_tcp;
  struct sockaddr_in bind_addr;
  
  uv_ip = RSTRING_PTR(ip);
  uv_port = FIX2INT(port);
  
  bind_addr = uv_ip4_addr(uv_ip, uv_port);
  
  Data_Get_Struct(self, rbuv_tcp_t, rbuv_tcp);
  RBUV_CHECK_UV_RETURN(uv_tcp_bind(rbuv_tcp->uv_handle, bind_addr));
  
  RBUV_DEBUG_LOG_DETAIL("self: %s, ip: %s, port: %d, rbuv_tcp: %p, uv_handle: %p",
                        RSTRING_PTR(rb_inspect(self)), uv_ip, uv_port, rbuv_tcp,
                        rbuv_tcp->uv_handle);
  
  return self;
}
Ejemplo n.º 28
0
int main() {
  int r;
  loop = uv_default_loop();

  setup_workers();

  struct sockaddr_in bind_addr;
  r = uv_ip4_addr("0.0.0.0", 7000, &bind_addr);
  if (r) ERROR("obtaining ipv4 address", r);

  uv_tcp_t server;
  uv_tcp_init(loop, &server);
  r = uv_tcp_bind(&server, (const struct sockaddr*) &bind_addr);
  if (r) ERROR("binding server to socket", r);

  r = uv_listen((uv_stream_t*) &server, 128/*backlog*/, connection_cb);
  if (r) ERROR("listening for connections", r);

  return uv_run(loop, UV_RUN_DEFAULT);
}
Ejemplo n.º 29
0
//ToDo: Server struct for state info?
int main(int argc, char *argv[])
{
	struct sockaddr_in addr;
	uv_loop_t *loop = uv_default_loop();
	uv_ip4_addr("0.0.0.0", 25565, &addr);
	uv_tcp_t server;
	if (uv_tcp_init(loop, &server)) {
		printf("Something has gone terribly wrong\n");
		return -1;
	}
	if (uv_tcp_bind(&server, (struct sockaddr*)&addr, 0)) {
		printf("Something has gone terribly wrong2\n");
		return -1;
	}
	if (uv_listen((uv_stream_t*)&server, SOMAXCONN, server_connect_cb)) {
		printf("Something has gone terribly wrong3\n");
		return -1;
	}
	return uv_run(loop, UV_RUN_DEFAULT);
}
Ejemplo n.º 30
0
    void
    make_new_connections() {
	assert(lock.lock_held_by_current_thread());
	while (!connect_queue.empty()) {
	    std::pair<connect_data *, chan_handle> pair = connect_queue.front();
	    connect_queue.pop();
            connect_data *cd = pair.first;
	    struct sockaddr_in client_addr = uv_ip4_addr("0.0.0.0", 0);
	    struct sockaddr_in server_addr = uv_ip4_addr(cd->ip_addr, 80);

	    cd->thread = this;
	    cd->chan = pair.second;
	    cd->connect.data = cd;

	    uv_tcp_init(loop, &cd->tcp);
	    uv_tcp_bind(&cd->tcp, client_addr);

	    uv_tcp_connect(&cd->connect, &cd->tcp, server_addr, connect_cb);
	}
    }