本文整理汇总了C++中resolve_hostname函数的典型用法代码示例。如果您正苦于以下问题:C++ resolve_hostname函数的具体用法?C++ resolve_hostname怎么用?C++ resolve_hostname使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了resolve_hostname函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:gyula,项目名称:syslog-ng-3.5,代码行数:52,代码来源:afinet-dest.c
示例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;
}
开发者ID:mikekap,项目名称:wine,代码行数:32,代码来源:net.c
示例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;
}
开发者ID:isosphere-contributions,项目名称:bacstack,代码行数:60,代码来源:datalink.c
示例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);
}
开发者ID:semyda94,项目名称:syslog-ng,代码行数:7,代码来源:afinet.c
示例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;
}
开发者ID:semyda94,项目名称:syslog-ng,代码行数:31,代码来源:afinet.c
示例6: afinet_sd_set_localip
void
afinet_sd_set_localip(LogDriver *s, gchar *ip)
{
AFSocketSourceDriver *self = (AFSocketSourceDriver *) s;
resolve_hostname(&self->bind_addr, ip);
}
开发者ID:semyda94,项目名称:syslog-ng,代码行数:7,代码来源:afinet.c
示例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;
}
开发者ID:abergstr,项目名称:BOINC,代码行数:30,代码来源:hostinfo_network.cpp
示例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);
}
}
开发者ID:TonyChiang,项目名称:amanda,代码行数:59,代码来源:krb5-security.c
示例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);
}
开发者ID:semyda94,项目名称:syslog-ng,代码行数:10,代码来源:afinet.c
示例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;
}
开发者ID:Artesian,项目名称:libzmq,代码行数:49,代码来源:tcp_address.cpp
示例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;
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:20,代码来源:ipv6_hostname.cpp
示例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);
}
开发者ID:andern,项目名称:circ,代码行数:37,代码来源:connection.c
示例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;
};
开发者ID:Turneliusz,项目名称:syslog-ng-3.5,代码行数:37,代码来源:stomp.c
示例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;
}
开发者ID:DavidChenLiang,项目名称:study,代码行数:37,代码来源:login_nopam.c
示例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;
}
开发者ID:regina,项目名称:amanda,代码行数:88,代码来源:taper.c
示例16: krb5_connect
/*
* krb5 version of a security handle allocator. Logically sets
* up a network "connection".
*/
static void
krb5_connect(
const char *hostname,
char * (*conf_fn)(char *, void *),
void (*fn)(void *, security_handle_t *, security_status_t),
void * arg,
void * datap)
{
struct sec_handle *rh;
int result;
char *canonname;
assert(fn != NULL);
assert(hostname != NULL);
auth_debug(1, "krb5: krb5_connect: %s\n", hostname);
krb5_init();
rh = alloc(sizeof(*rh));
security_handleinit(&rh->sech, &krb5_security_driver);
rh->hostname = NULL;
rh->rs = NULL;
rh->ev_timeout = NULL;
rh->rc = NULL;
result = resolve_hostname(hostname, 0, NULL, &canonname);
if(result != 0) {
dbprintf(_("resolve_hostname(%s): %s\n"), hostname, gai_strerror(result));
security_seterror(&rh->sech, _("resolve_hostname(%s): %s\n"), hostname,
gai_strerror(result));
(*fn)(arg, &rh->sech, S_ERROR);
return;
}
if (canonname == NULL) {
dbprintf(_("resolve_hostname(%s) did not return a canonical name\n"), hostname);
security_seterror(&rh->sech,
_("resolve_hostname(%s) did not return a canonical name\n"), hostname);
(*fn)(arg, &rh->sech, S_ERROR);
return;
}
rh->hostname = canonname; /* will be replaced */
canonname = NULL; /* steal reference */
rh->rs = tcpma_stream_client(rh, newhandle++);
rh->rc->conf_fn = conf_fn;
rh->rc->datap = datap;
rh->rc->recv_security_ok = NULL;
rh->rc->prefix_packet = NULL;
if (rh->rs == NULL)
goto error;
amfree(rh->hostname);
rh->hostname = stralloc(rh->rs->rc->hostname);
#ifdef AMANDA_KEYTAB
keytab_name = AMANDA_KEYTAB;
#else
if(conf_fn) {
keytab_name = conf_fn("krb5keytab", datap);
}
#endif
#ifdef AMANDA_PRINCIPAL
principal_name = AMANDA_PRINCIPAL;
#else
if(conf_fn) {
principal_name = conf_fn("krb5principal", datap);
}
#endif
/*
* We need to open a new connection.
*
* XXX need to eventually limit number of outgoing connections here.
*/
if(rh->rc->read == -1) {
if (runkrb5(rh) < 0)
goto error;
rh->rc->refcnt++;
}
/*
* The socket will be opened async so hosts that are down won't
* block everything. We need to register a write event
* so we will know when the socket comes alive.
*
* Overload rh->rs->ev_read to provide a write event handle.
* We also register a timeout.
*/
rh->fn.connect = fn;
rh->arg = arg;
rh->rs->ev_read = event_register((event_id_t)(rh->rs->rc->write),
EV_WRITEFD, sec_connect_callback, rh);
rh->ev_timeout = event_register(CONNECT_TIMEOUT, EV_TIME,
sec_connect_timeout, rh);
//.........这里部分代码省略.........
开发者ID:TonyChiang,项目名称:amanda,代码行数:101,代码来源:krb5-security.c
示例17: bsdtcp_connect
/*
* bsdtcp version of a security handle allocator. Logically sets
* up a network "connection".
*/
static void
bsdtcp_connect(
const char *hostname,
char * (*conf_fn)(char *, void *),
void (*fn)(void *, security_handle_t *, security_status_t),
void * arg,
void * datap)
{
struct sec_handle *rh;
int result;
char *canonname;
char *service;
in_port_t port;
assert(fn != NULL);
assert(hostname != NULL);
(void)conf_fn; /* Quiet unused parameter warning */
(void)datap; /* Quiet unused parameter warning */
auth_debug(1, _("bsdtcp: bsdtcp_connect: %s\n"), hostname);
rh = alloc(sizeof(*rh));
security_handleinit(&rh->sech, &bsdtcp_security_driver);
rh->hostname = NULL;
rh->rs = NULL;
rh->ev_timeout = NULL;
rh->rc = NULL;
result = resolve_hostname(hostname, 0, NULL, &canonname);
if(result != 0) {
dbprintf(_("resolve_hostname(%s): %s\n"), hostname, gai_strerror(result));
security_seterror(&rh->sech, _("resolve_hostname(%s): %s\n"), hostname,
gai_strerror(result));
(*fn)(arg, &rh->sech, S_ERROR);
return;
}
if (canonname == NULL) {
dbprintf(_("resolve_hostname(%s) did not return a canonical name\n"), hostname);
security_seterror(&rh->sech,
_("resolve_hostname(%s) did not return a canonical name\n"), hostname);
(*fn)(arg, &rh->sech, S_ERROR);
return;
}
rh->hostname = canonname; /* will be replaced */
canonname = NULL; /* steal reference */
rh->rs = tcpma_stream_client(rh, newhandle++);
rh->rc->recv_security_ok = &bsd_recv_security_ok;
rh->rc->prefix_packet = &bsd_prefix_packet;
if (rh->rs == NULL)
goto error;
amfree(rh->hostname);
rh->hostname = stralloc(rh->rs->rc->hostname);
if (conf_fn) {
service = conf_fn("client_port", datap);
if (strlen(service) <= 1)
service = "amanda";
} else {
service = "amanda";
}
port = find_port_for_service(service, "tcp");
if (port == 0) {
security_seterror(&rh->sech, _("%s/tcp unknown protocol"), service);
goto error;
}
/*
* We need to open a new connection.
*
* XXX need to eventually limit number of outgoing connections here.
*/
if(rh->rc->read == -1) {
if (runbsdtcp(rh, port) < 0)
goto error;
rh->rc->refcnt++;
}
/*
* The socket will be opened async so hosts that are down won't
* block everything. We need to register a write event
* so we will know when the socket comes alive.
*
* Overload rh->rs->ev_read to provide a write event handle.
* We also register a timeout.
*/
rh->fn.connect = fn;
rh->arg = arg;
rh->rs->ev_read = event_register((event_id_t)(rh->rs->rc->write),
EV_WRITEFD, sec_connect_callback, rh);
rh->ev_timeout = event_register(CONNECT_TIMEOUT, EV_TIME,
sec_connect_timeout, rh);
return;
//.........这里部分代码省略.........
开发者ID:TonyChiang,项目名称:amanda,代码行数:101,代码来源:bsdtcp-security.c
示例18: resolve_proc
static DWORD CALLBACK resolve_proc( LPVOID arg )
{
struct resolve_args *ra = arg;
return resolve_hostname( ra->hostname, ra->port, ra->sa, ra->sa_len );
}
开发者ID:mikekap,项目名称:wine,代码行数:5,代码来源:net.c
示例19: resolve_hostname
std::vector<condor_sockaddr> resolve_hostname(const char* hostname)
{
MyString host(hostname);
return resolve_hostname(host);
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:5,代码来源:ipv6_hostname.cpp
示例20: handle_participate_message
void handle_participate_message(zeroconf_msg& message)
{
msg_data m_data;
memcpy(&m_data, message.payload(), message.payload_size() );
debug_->debug("receive participate(%u) from (%s)\n",radio_->id(),(char *)message.source());
if (mode==0)//if node is in the network
{//if you receive an other message
if (!strcmp((char *)message.destination(),my_ip) || !strcmp(m_data.dest_host,my_host))
{//you are the destination
//debug_->debug("%s got a message wow!:)(%s)\n",my_ip,message.source_ip);
if (!strcmp((char *)message.source(),"0.0.0.0")) //someone is trying to connect with my ip
{//if the sender is one whos trying to come in
debug_->debug("found an outsider, i must reply to him\n");
set_node_message_id(my_MACC,++msgID);
zeroconf_msg reply;
memset(&reply,0,sizeof(reply));
reply.set_type(TYPE_LEN * sizeof(char), (Os::Radio::block_data_t *) &("participate"));
reply.set_source(IP_LEN * sizeof(char),(Os::Radio::block_data_t *) &my_ip);
reply.set_destination(IP_LEN * sizeof(char),(Os::Radio::block_data_t *) &("ANY"));
reply.set_source_mac(MAC_LEN * sizeof(char),(Os::Radio::block_data_t *) &my_MACC );
reply.set_msg_id(msgID);
msg_data reply_data;
strcpy(reply_data.source_host,my_host);
reply.set_payload(sizeof(msg_data),(Os::Radio::block_data_t *) &reply_data);
radio_->send( Os::Radio::BROADCAST_ADDRESS, sizeof(zeroconf_msg), (Os::Radio::block_data_t *)&reply);
}
}
else
{//else forward the message
//strcpy(message.not_ip,my_ip);
radio_->send( Os::Radio::BROADCAST_ADDRESS, sizeof(zeroconf_msg), (Os::Radio::block_data_t *)&message);
}
}
else if (mode == 1)
{//if node is not in the network
debug_->debug("eimai o 0:m_data.source_host=%s\n",m_data.source_host);
if (!strcmp((char *)message.source(),my_ip))
{//if you receive message from someone with your ip
counter=0;
debug_->debug("(%u)WOW someone has my ip.... i must change it?\n",radio_->id());
generate_ip();//generate new ip
}
if (!strcmp(m_data.source_host,my_host))
{//if you receive message from someone with your hostname
debug_->debug("%u === my_host = %s & source_host = %s \n", radio_->id(), my_host, m_data.source_host);
counter=0;
//generate_hostname();//generate new hostname
debug_->debug("(%u)WOW someone has my hostname.... i must change it?\n",radio_->id());
resolve_hostname(my_host, trial_num);
trial_num = 1;
}
//someone is claiming the hostname i want at the same time
if (!strcmp(m_data.dest_host,my_host) && strcmp((char *)message.source_mac(),my_MACC))
{
counter=0;
resolve_hostname(my_host, trial_num);
}
if (!strcmp((char *)message.destination(),my_ip) && strcmp((char *)message.source_mac(),my_MACC))
{
counter=0;
generate_ip();
}
}
}
开发者ID:CEID-DS,项目名称:cbox,代码行数:75,代码来源:Zeroconf.cpp
注:本文中的resolve_hostname函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论