本文整理汇总了C++中resolve_hostname函数的典型用法代码示例。如果您正苦于以下问题:C++ resolve_hostname函数的具体用法?C++ resolve_hostname怎么用?C++ resolve_hostname使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了resolve_hostname函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: afinet_dd_setup_addresses
static gboolean
afinet_dd_setup_addresses(AFSocketDestDriver *s)
{
AFInetDestDriver *self = (AFInetDestDriver *) s;
if (!afsocket_dd_setup_addresses_method(s))
return FALSE;
g_sockaddr_unref(self->super.bind_addr);
g_sockaddr_unref(self->super.dest_addr);
if (self->super.transport_mapper->address_family == AF_INET)
{
self->super.bind_addr = g_sockaddr_inet_new("0.0.0.0", 0);
self->super.dest_addr = g_sockaddr_inet_new("0.0.0.0", 0);
}
#if ENABLE_IPV6
else if (self->super.transport_mapper->address_family == AF_INET6)
{
self->super.bind_addr = g_sockaddr_inet6_new("::", 0);
self->super.dest_addr = g_sockaddr_inet6_new("::", 0);
}
#endif
else
{
/* address family not known */
g_assert_not_reached();
}
if ((self->bind_ip && !resolve_hostname(&self->super.bind_addr, self->bind_ip)))
return FALSE;
if (!resolve_hostname(&self->super.dest_addr, self->hostname))
return FALSE;
if (!self->dest_port)
{
const gchar *port_change_warning = transport_mapper_inet_get_port_change_warning(self->super.transport_mapper);
if (port_change_warning)
{
msg_warning(port_change_warning,
evt_tag_str("id", self->super.super.super.id),
NULL);
}
g_sockaddr_set_port(self->super.dest_addr, transport_mapper_inet_get_server_port(self->super.transport_mapper));
}
else
g_sockaddr_set_port(self->super.dest_addr, afinet_lookup_service(self->super.transport_mapper, self->dest_port));
return TRUE;
}
示例2: netconn_resolve
BOOL netconn_resolve( WCHAR *hostname, INTERNET_PORT port, struct sockaddr *sa, socklen_t *sa_len, int timeout )
{
DWORD ret;
if (timeout)
{
DWORD status;
HANDLE thread;
struct resolve_args ra;
ra.hostname = hostname;
ra.port = port;
ra.sa = sa;
ra.sa_len = sa_len;
thread = CreateThread( NULL, 0, resolve_proc, &ra, 0, NULL );
if (!thread) return FALSE;
status = WaitForSingleObject( thread, timeout );
if (status == WAIT_OBJECT_0) GetExitCodeThread( thread, &ret );
else ret = ERROR_WINHTTP_TIMEOUT;
CloseHandle( thread );
}
else ret = resolve_hostname( hostname, port, sa, sa_len );
if (ret)
{
set_last_error( ret );
return FALSE;
}
return TRUE;
}
示例3: bacdl_connection_init
int bacdl_connection_init(bacdl_connection_t *connection, char *tcp_host, uint16_t tcp_port, uint8_t port_id)
{
int ret = 1;
memset(connection, 0, sizeof(*connection));
connection->tcp_host = tcp_host;
connection->tcp_port = tcp_port;
connection->port_id = port_id;
buffer_init(&connection->send_buf, connection->send_buffer, BACDL_MAX_MESSAGE_LENGTH);
buffer_init(&connection->rcv_buf, connection->rcv_buffer, BACDL_MAX_MESSAGE_LENGTH);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons((unsigned short)tcp_port);
if(!resolve_hostname(tcp_host, &addr.sin_addr)) {
error("failed to resolve hostname '%s'", tcp_host);
ret = 0;
goto done;
}
connection->socket = socket(AF_INET, SOCK_STREAM, 0);
if(connection->socket < 0) {
error("socket() call failed");
ret = 0;
goto done;
}
int nodelayflag = 1;
setsockopt(connection->socket, IPPROTO_TCP, TCP_NODELAY, (char*)&nodelayflag, sizeof(int));
if(connect(connection->socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
error("connect() call failed");
ret = 0;
goto done;
}
bacdl_msg_t msg;
if(!bacdl_msg_init2(&msg, BACDL_MSG_CODE_PORT_ID)
|| !bacdl_port_id_msg_init(&msg.port_id, port_id)) {
error("error initializing port_id message");
ret = 0;
goto done;
}
if(!bacdl_connection_send_msg(connection, &msg)) {
error("error sending the port_id message");
ret = 0;
goto done;
}
done:
if(!ret) {
if(connection->socket >= 0) {
close(connection->socket);
connection->socket = -1;
}
}
return ret;
}
示例4: afinet_dd_set_localip
void
afinet_dd_set_localip(LogDriver *s, gchar *ip)
{
AFInetDestDriver *self = (AFInetDestDriver *) s;
resolve_hostname(&self->super.bind_addr, ip);
}
示例5: afinet_sd_new
LogDriver *
afinet_sd_new(gint af, gchar *host, gint port, guint flags)
{
AFInetSourceDriver *self = g_new0(AFInetSourceDriver, 1);
afsocket_sd_init_instance(&self->super, &self->sock_options.super, flags);
if (self->super.flags & AFSOCKET_DGRAM)
self->super.transport = g_strdup("udp");
else if (self->super.flags & AFSOCKET_STREAM)
self->super.transport = g_strdup("tcp");
if (af == AF_INET)
{
self->super.bind_addr = g_sockaddr_inet_new("0.0.0.0", port);
if (!host)
host = "0.0.0.0";
}
else
{
#if ENABLE_IPV6
self->super.bind_addr = g_sockaddr_inet6_new("::", port);
if (!host)
host = "::";
#else
g_assert_not_reached();
#endif
}
resolve_hostname(&self->super.bind_addr, host);
self->super.setup_socket = afinet_sd_setup_socket;
return &self->super.super;
}
示例6: afinet_sd_set_localip
void
afinet_sd_set_localip(LogDriver *s, gchar *ip)
{
AFSocketSourceDriver *self = (AFSocketSourceDriver *) s;
resolve_hostname(&self->bind_addr, ip);
}
示例7: strcpy
// get domain name and IP address of this host
//
int HOST_INFO::get_local_network_info() {
struct sockaddr_storage s;
strcpy(domain_name, "");
strcpy(ip_addr, "");
// it seems like we should use getdomainname() instead of gethostname(),
// but on FC6 it returns "(none)".
//
if (gethostname(domain_name, 256)) {
return ERR_GETHOSTBYNAME;
}
int retval = resolve_hostname(domain_name, s);
if (retval) return retval;
#ifdef _WIN32
sockaddr_in* sin = (sockaddr_in*)&s;
strlcpy(ip_addr, inet_ntoa(sin->sin_addr), sizeof(ip_addr));
#else
if (s.ss_family == AF_INET) {
sockaddr_in* sin = (sockaddr_in*)&s;
inet_ntop(AF_INET, (void*)(&sin->sin_addr), ip_addr, 256);
} else {
sockaddr_in6* sin = (sockaddr_in6*)&s;
inet_ntop(AF_INET6, (void*)(&sin->sin6_addr), ip_addr, 256);
}
#endif
return 0;
}
示例8: krb5_init
/*
* Setup some things about krb5. This should only be called once.
*/
static void
krb5_init(void)
{
static int beenhere = 0;
char *p;
char *myfqhostname=NULL;
if (beenhere)
return;
beenhere = 1;
#ifndef BROKEN_MEMORY_CCACHE
putenv(stralloc("KRB5_ENV_CCNAME=MEMORY:amanda_ccache"));
#else
/*
* MEMORY ccaches seem buggy and cause a lot of internal heap
* corruption. malloc has been known to core dump. This behavior
* has been witnessed in Cygnus' kerbnet 1.2, MIT's krb V 1.0.5 and
* MIT's krb V -current as of 3/17/1999.
*
* We just use a lame ccache scheme with a uid suffix.
*/
atexit(cleanup);
{
char *ccache;
ccache = malloc(128);
g_snprintf(ccache, SIZEOF(ccache),
"KRB5_ENV_CCNAME=FILE:/tmp/amanda_ccache.%ld.%ld",
(long)geteuid(), (long)getpid());
putenv(ccache);
}
#endif
gethostname(myhostname, SIZEOF(myhostname) - 1);
myhostname[SIZEOF(myhostname) - 1] = '\0';
/*
* In case it isn't fully qualified, do a DNS lookup. Ignore
* any errors (this is best-effort).
*/
if (resolve_hostname(myhostname, SOCK_STREAM, NULL, &myfqhostname) == 0
&& myfqhostname != NULL) {
strncpy(myhostname, myfqhostname, SIZEOF(myhostname)-1);
myhostname[SIZEOF(myhostname)-1] = '\0';
amfree(myfqhostname);
}
/*
* Lowercase the results. We assume all host/ principals will be
* lowercased.
*/
for (p = myhostname; *p != '\0'; p++) {
if (isupper((int)*p))
*p = tolower(*p);
}
}
示例9: afinet_dd_setup_socket
static gboolean
afinet_dd_setup_socket(AFSocketDestDriver *s, gint fd)
{
AFInetDestDriver *self = (AFInetDestDriver *) s;
if (!resolve_hostname(&self->super.dest_addr, self->super.hostname))
return FALSE;
return afinet_setup_socket(fd, self->super.dest_addr, (InetSocketOptions *) s->sock_options_ptr, AFSOCKET_DIR_SEND);
}
示例10: strrchr
int zmq::tcp_address_t::resolve (const char *name_, bool local_, bool ipv4only_)
{
// Find the ':' at end that separates address from the port number.
const char *delimiter = strrchr (name_, ':');
if (!delimiter) {
errno = EINVAL;
return -1;
}
// Separate the address/port.
std::string addr_str (name_, delimiter - name_);
std::string port_str (delimiter + 1);
// Remove square brackets around the address, if any.
if (addr_str.size () >= 2 && addr_str [0] == '[' &&
addr_str [addr_str.size () - 1] == ']')
addr_str = addr_str.substr (1, addr_str.size () - 2);
uint16_t port;
// Allow 0 specifically, to detect invalid port error in atoi if not
if (port_str == "*" || port_str == "0")
// Resolve wildcard to 0 to allow autoselection of port
port = 0;
else {
// Parse the port number (0 is not a valid port).
port = (uint16_t) atoi (port_str.c_str ());
if (port == 0) {
errno = EINVAL;
return -1;
}
}
// Resolve the IP address.
int rc;
if (local_)
rc = resolve_interface (addr_str.c_str (), ipv4only_);
else
rc = resolve_hostname (addr_str.c_str (), ipv4only_);
if (rc != 0)
return -1;
// Set the port into the address structure.
if (address.generic.sa_family == AF_INET6)
address.ipv6.sin6_port = htons (port);
else
address.ipv4.sin_port = htons (port);
return 0;
}
示例11: verify_name_has_ip
bool verify_name_has_ip(MyString name, condor_sockaddr addr){
std::vector<condor_sockaddr> addrs;
bool found = false;
addrs = resolve_hostname(name);
dprintf(D_FULLDEBUG, "IPVERIFY: checking %s against %s\n", name.Value(), addr.to_ip_string().Value());
for(unsigned int i = 0; i < addrs.size(); i++) {
// compare MyStrings
// addr.to_ip_string
if(addrs[i].to_ip_string() == addr.to_ip_string()) {
dprintf(D_FULLDEBUG, "IPVERIFY: matched %s to %s\n", addrs[i].to_ip_string().Value(), addr.to_ip_string().Value());
found = true;
} else {
dprintf(D_FULLDEBUG, "IPVERIFY: comparing %s to %s\n", addrs[i].to_ip_string().Value(), addr.to_ip_string().Value());
}
}
dprintf(D_FULLDEBUG, "IPVERIFY: ip found is %i\n", found);
return found;
}
示例12: ci_connect
void ci_connect(struct ci_connection *con)
{
int sock;
int con_res;
error_t err;
struct sockaddr_in* server = calloc(1, sizeof(*server));
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1)
perror("Creating socket");
err = resolve_hostname(con->server.host, &con->server.ip);
if (err != E_SUCCESS)
{
fprintf(stderr, "%s: %s\n", "Error connecting to IRC server",
err_desc[err].message);
exit(1);
}
server->sin_addr.s_addr = inet_addr(con->server.ip);
server->sin_port = htons((uint16_t)con->server.port);
server->sin_family = AF_INET;
con_res = connect(sock, (struct sockaddr*)server, sizeof(*server));
if (con_res == -1)
perror("Connecting to server");
err = authenticate(sock, (struct sockaddr*)server, con);
if (err != E_SUCCESS)
{
fprintf(stderr, "%s: %s\n", "Error connecting to IRC server",
err_desc[err].message);
exit(1);
}
/* Start infinite loop */
communicate(sock, (struct sockaddr*)server);
}
示例13: stomp_connect
int
stomp_connect(stomp_connection **connection_ref, char *hostname, int port)
{
stomp_connection *conn;
conn = g_new0(stomp_connection, 1);
conn->socket = socket(AF_INET, SOCK_STREAM, 0);
if (conn->socket == -1)
{
msg_error("Failed to create socket!", NULL);
return FALSE;
}
conn->remote_sa = g_sockaddr_inet_new("127.0.0.1", port);
if (!resolve_hostname(&conn->remote_sa, hostname))
{
msg_error("Failed to resolve hostname in stomp driver",
evt_tag_str("hostname", hostname),
NULL);
return FALSE;
}
if (!g_connect(conn->socket, conn->remote_sa))
{
msg_error("Stomp connection failed",
evt_tag_str("host", hostname),
NULL);
_stomp_connection_free(conn);
return FALSE;
}
(*connection_ref) = conn;
return TRUE;
};
示例14: from_match
static bool from_match (const char *tok, const char *string)
{
size_t tok_len;
/*
* If a token has the magic value "ALL" the match always succeeds. Return
* true if the token fully matches the string. If the token is a domain
* name, return true if it matches the last fields of the string. If the
* token has the magic value "LOCAL", return true if the string does not
* contain a "." character. If the token is a network number, return true
* if it matches the head of the string.
*/
#if HAVE_INNETGR
if (tok[0] == '@') { /* netgroup */
return (netgroup_match (tok + 1, string, (char *) 0));
} else
#endif
if (string_match (tok, string)) { /* ALL or exact match */
return true;
} else if (tok[0] == '.') { /* domain: match last fields */
size_t str_len;
str_len = strlen (string);
tok_len = strlen (tok);
if ( (str_len > tok_len)
&& (strcasecmp (tok, string + str_len - tok_len) == 0)) {
return true;
}
} else if (strcasecmp (tok, "LOCAL") == 0) { /* local: no dots */
if (strchr (string, '.') == NULL) {
return true;
}
} else if ( (tok[(tok_len = strlen (tok)) - 1] == '.') /* network */
&& (strncmp (tok, resolve_hostname (string), tok_len) == 0)) {
return true;
}
return false;
}
示例15: open_read_socket
/* Open a socket to the dumper. Returns TRUE if everything is happy, FALSE
otherwise. */
static gboolean open_read_socket(dump_info_t * info, char * split_diskbuffer,
guint64 splitsize, guint64 fallback_splitsize) {
in_port_t port = 0;
int socket;
int fd;
int result;
struct addrinfo *res;
if ((result = resolve_hostname("localhost", 0, &res, NULL) != 0)) {
char *m;
char *q;
int save_errno = errno;
char *qdiskname = quote_string(info->diskname);
m = vstralloc("[localhost resolve failure: ",
strerror(save_errno),
"]",
NULL);
q = quote_string(m);
putresult(TAPE_ERROR, "%s %s\n", info->handle, q);
log_add(L_FAIL, "%s %s %s %d %s",
info->hostname, qdiskname, info->timestamp,
info->level, q);
amfree(qdiskname);
amfree(m);
amfree(q);
return FALSE;
}
socket = stream_server(res->ai_family, &port, 0, STREAM_BUFSIZE, 0);
freeaddrinfo(res);
if (socket < 0) {
char *m;
char *q;
int save_errno = errno;
char *qdiskname = quote_string(info->diskname);
m = vstralloc("[port create failure: ",
strerror(save_errno),
"]",
NULL);
q = quote_string(m);
putresult(TAPE_ERROR, "%s %s\n", info->handle, q);
log_add(L_FAIL, "%s %s %s %d %s",
info->hostname, qdiskname, info->timestamp,
info->level, q);
amfree(qdiskname);
amfree(m);
amfree(q);
return FALSE;
}
putresult(PORT, "%d\n", port);
fd = stream_accept(socket, CONNECT_TIMEOUT, 0, STREAM_BUFSIZE);
if (fd < 0) {
char *m, *q;
int save_errno = errno;
char *qdiskname = quote_string(info->diskname);
m = vstralloc("[port connect failure: ",
strerror(save_errno),
"]",
NULL);
q = quote_string(m);
putresult(TAPE_ERROR, "%s %s\n", info->handle, q);
log_add(L_FAIL, "%s %s %s %d %s",
info->hostname, qdiskname, info->timestamp,
info->level, q);
amfree(qdiskname);
aclose(socket);
amfree(m);
amfree(q);
return FALSE;
} else {
aclose(socket);
}
info->source = taper_source_new(info->handle, PORT_WRITE, NULL, fd,
split_diskbuffer, splitsize,
fallback_splitsize);
/* FIXME: This should be handled properly. */
g_assert(info->source != NULL);
return TRUE;
}