void Tcp::setup_client_bind() { struct in_addr addr; inet_pton(socket_family(), "127.0.0.1", &addr); bzero(&client_sock_in, sizeof(client_sock_in)); client_sock_in.sin_family = socket_family(); client_sock_in.sin_addr = addr; client_addr = (struct sockaddr *) &client_sock_in; client_addr_size = sizeof(client_sock_in); }
void Socket::perform_socket() { int optval = 1; /* attempt to get socket */ if ((sockfd = socket(socket_family(), socket_type(), 0)) < 0) perror("socket fail"); /* set SO_REUSEADDR for quick restarts */ if (socket_family() == AF_INET || socket_family() == AF_INET6) setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); }
void Socket::perform_client_socket() { /* attempt to get socket */ if ((sockfd = socket(socket_family(), socket_type(), 0)) < 0) { perror("socket fail"); } }
void Tcp::setup_bind() { /* setup bind parameters */ bzero(&sock_in, sizeof(sock_in)); sock_in.sin_family = socket_family(); sock_in.sin_addr.s_addr = htonl(INADDR_ANY); sock_in.sin_port = htons(get_port()); server_addr = (struct sockaddr *) &sock_in; server_addr_size = sizeof(sock_in); }
static mrb_value mrb_basicsocket_getsockopt(mrb_state *mrb, mrb_value self) { char opt[8]; int s; mrb_int family, level, optname; mrb_value c, data; socklen_t optlen; mrb_get_args(mrb, "ii", &level, &optname); s = socket_fd(mrb, self); optlen = sizeof(opt); if (getsockopt(s, level, optname, opt, &optlen) == -1) mrb_sys_fail(mrb, "getsockopt"); c = mrb_const_get(mrb, mrb_obj_value(mrb_class_get(mrb, "Socket")), mrb_intern_lit(mrb, "Option")); family = socket_family(s); data = mrb_str_new(mrb, opt, optlen); return mrb_funcall(mrb, c, "new", 4, mrb_fixnum_value(family), mrb_fixnum_value(level), mrb_fixnum_value(optname), data); }