JunkBox_Lib++ (for Windows) 1.10.1
|
ネットワーク用ライブラリヘッダ for IPv4/IPv6 More...
Go to the source code of this file.
Macros | |
#define | _WINSOCK_DEPRECATED_NO_WARNINGS |
#define | socklen_t int |
#define | _WINSOCK_DEPRECATED_NO_WARNINGS |
#define | udp_server_socket(p, a) _udp_server_socket((p), (a), AF_UNSPEC) |
#define | udp_server_socket_ipv4(p) _udp_server_socket((p), NULL, AF_INET) |
#define | udp_server_socket_ipv6(p, a) _udp_server_socket((p), (a), AF_INET6) |
#define | udp_server_socket_setopt(p, o, v, l, a) _udp_server_socket_setopt((p), (o), (v), (l), (a), AF_UNSPEC) |
#define | udp_server_socket_setopt_ipv4(p, o, v, l) _udp_server_socket_setopt((p), (o), (v), (l), NULL, AF_INET) |
#define | udp_server_socket_setopt_ipv6(p, o, v, l, a) _udp_server_socket_setopt((p), (o), (v), (l), (a), AF_INET6) |
#define | udp_client_socket(h, p, a) _udp_client_socket((h), (p), (a), AF_UNSPEC) |
#define | udp_client_socket_ipv4(h, p, a) _udp_client_socket((h), (p), (a), AF_INET) |
#define | udp_client_socket_ipv6(h, p, a) _udp_client_socket((h), (p), (a), AF_INET6) |
#define | udp_bind(s, p) _udp_bind((s), (p), AF_UNSPEC) |
#define | udp_bind_ipv4(s, p) _udp_bind((s), (p), AF_INET) |
#define | udp_bind_ipv6(s, p) _udp_bind((s), (p), AF_INET6) |
#define | udp_bind_setopt(s, p, o, v, l) _udp_bind_setopt((s), (p), (o), (v), (l), AF_UNSPEC) |
#define | udp_bind_setopt_ipv4(s, p, o, v, l) _udp_bind_setopt((s), (p), (o), (v), (l), AF_INET) |
#define | udp_bind_setopt_ipv6(s, p, o, v, l) _udp_bind_setopt((s), (p), (o), (v), (l), AF_INET6) |
#define | tcp_server_socket(p) _tcp_server_socket((p), AF_UNSPEC) |
#define | tcp_server_socket_ipv4(p) _tcp_server_socket((p), AF_INET) |
#define | tcp_server_socket_ipv6(p) _tcp_server_socket((p), AF_INET6) |
#define | tcp_server_socket_setop(p, o, v, l) _tcp_server_socket_setopt((p), (o), (v), (l), AF_UNSPEC) |
#define | tcp_server_socket_setop_ipv4(p, o, v, l) _tcp_server_socket_setopt((p), (o), (v), (l), AF_INET) |
#define | tcp_server_socket_setop_ipv6(p, o, v, l) _tcp_server_socket_setopt((p), (o), (v), (l), AF_INET6) |
#define | tcp_server_bind(p) _tcp_server_bind((p), AF_UNSPEC) |
#define | tcp_server_bind_ipv4(p) _tcp_server_bind((p), AF_INET) |
#define | tcp_server_bind_ipv6(p) _tcp_server_bind((p), AF_INET6) |
#define | tcp_server_bind_setopt(p, o, v, l) _tcp_server_bind_setopt((p), (o), (v), (l), AF_UNSPEC) |
#define | tcp_server_bind_setopt_ipv4(p, o, v, l) _tcp_server_bind_setopt((p), (o), (v), (l), AF_INET) |
#define | tcp_server_bind_setopt_ipv6(p, o, v, l) _tcp_server_bind_setopt((p), (o), (v), (l), AF_INET6) |
#define | tcp_client_socket(h, p) _tcp_client_socket((h), (p), AF_UNSPEC) |
#define | tcp_client_socket_ipv4(h, p) _tcp_client_socket((h), (p), AF_INET) |
#define | tcp_client_socket_ipv6(h, p) _tcp_client_socket((h), (p), AF_INET6) |
#define | tcp_client_bind_socket(h, s, c) _tcp_client_bind_socket((h), (c), (s), AF_UNSPEC) |
#define | tcp_client_bind_socket_ipv4(h, s, c) _tcp_client_bind_socket((h), (c), (s), AF_INET) |
#define | tcp_client_bind_socket_ipv6(h, s, c) _tcp_client_bind_socket((h), (c), (s), AF_INET6) |
#define | tcp_bind(s, p) _tcp_bind((s), (p), AD_UNSPEC) |
#define | tcp_bind_ipv4(s, p) _tcp_bind((s), (p), AD_INET) |
#define | tcp_bind_ipv6(s, p) _tcp_bind((s), (p), AD_INET6) |
#define | tcp_bind_setopt(s, p, o, v, l) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_UNSPEC) |
#define | tcp_bind_setopt_ipv4(s, p, o, v, l) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_INET) |
#define | tcp_bind_setopt_ipv6(s, p, o, v, l) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_INET6) |
#define | tcp_connect(s, h, p) _tcp_connect((s), (h), (p), AF_UNSPEC) |
#define | tcp_connect_ipv4(s, h, p) _tcp_connect((s), (h), (p), AF_INET) |
#define | tcp_connect_ipv6(s, h, p) _tcp_connect((s), (h), (p), AF_INET6) |
#define | udp_send_mesg(s, m, a) udp_send((s), (m), 0, (a)) |
#define | tcp_send_mesg(s, m) tcp_send((s), (m), 0) |
#define | make_sockaddr_bynum_ipv4(a, p) make_sockaddr_bynum((a), (p), AF_INET) |
#define | make_sockaddr_bynum_ipv6(a, p) make_sockaddr_bynum((a), (p), AF_INET6) |
#define | get_hostname(h) _get_hostname((h), AF_UNSPEC) |
#define | get_hostname_ipv4(h) _get_hostname((h), AF_INET) |
#define | get_hostname_ipv6(h) _get_hostname((h), AF_INET6) |
#define | get_hostname_bynum_ipv4(n) get_hostname_bynum((n), AF_INET) |
#define | get_hostname_bynum_ipv6(n) get_hostname_bynum((n), AF_INET6) |
#define | get_ipaddr_byname_ipv4(h) get_ipaddr_byname((h), AF_INET) |
#define | get_ipaddr_byname_ipv6(h) get_ipaddr_byname((h), AF_INET6) |
#define | get_ipaddr_byname_num_ipv4(h) get_ipaddr_byname_num((h), AF_INET) |
#define | get_ipaddr_byname_num_ipv6(h) get_ipaddr_byname_num((h), AF_INET6) |
#define | get_myipaddr_ipv4() get_myipaddr(AF_INET) |
#define | get_myipaddr_ipv6() get_myipaddr(AF_INET6) |
#define | get_myipaddr_num_ipv4() get_myipaddr_num(AF_INET) |
#define | get_myipaddr_num_ipv6() get_myipaddr_num(AF_INET6) |
#define | get_localip_bydest(h) _get_localip_bydest((h), AF_UNSPEC) |
#define | get_localip_bydest_ipv4(h) _get_localip_bydest((h), AF_INET) |
#define | get_localip_bydest_ipv6(h) _get_localip_bydest((h), AF_INET6) |
#define | get_localip() _get_localip_bydest("www.google.co.jp", AF_UNSPEC) |
#define | get_localip_ipv4() _get_localip_bydest("www.google.co.jp", AF_INET) |
#define | get_localip_ipv6() _get_localip_bydest("www.google.co.jp", AF_INET6) |
#define | get_mynetaddr_num_ipv4() get_mynetaddr_num(AF_INET) |
#define | get_mynetaddr_num_ipv6() get_mynetaddr_num(AF_INET6) |
#define | get_mynetaddr_ipv4() get_mynetaddr(AF_INET) |
#define | get_mynetaddr_ipv6() get_mynetaddr(AF_INET6) |
#define | to_address_num8_ipv4(a, m) to_address_num((a), (m), 1, AF_INET) |
IPv4 アドレス(文字列)→ [IPv4 アドレス],[ネットマスク](数字8byte) | |
#define | to_address_num4_ipv4(a, m) to_address_num((a), (m), 0, AF_INET) |
IPv4 アドレス(文字列)→ [IPv4 アドレス](数字4byte) | |
#define | to_address_char8_ipv4(a) to_address_char((a), 1, AF_INET) |
[IPv4 アドレス],[ネットマスク](数字8byte)→ IPv4 アドレス(文字列) | |
#define | to_address_char4_ipv4(a) to_address_char((a), 0, AF_INET) |
[IPv4 アドレス](数字4byte)→ IPv4 アドレス(文字列) | |
#define | to_address_num32_ipv6(a, m) to_address_num((a), (m), 1, AF_INET6) |
IPv6 アドレス(文字列)→ [IPv6 アドレス],[ネットマスク](数字32byte) | |
#define | to_address_num16_ipv6(a, m) to_address_num((a), (m), 0, AF_INET6) |
IPv6 アドレス(文字列)→ [IPv6 アドレス](数字16byte) | |
#define | to_address_char32_ipv6(a) to_address_char((a), 1, AF_INET6) |
[IPv6 アドレス],[ネットマスク](数字32byte)→ IPv6 アドレス(文字列) | |
#define | to_address_char16_ipv6(a) to_address_char((a), 0, AF_INET6) |
[IPv6 アドレス](数字16byte)→ IPv6 アドレス(文字列) | |
#define | is_same_network_num_ipv4(a1, a2, m) is_same_network_num((a1), (a2), (m), AF_INET) |
#define | is_same_network_num_ipv6(a1, a2, m) is_same_network_num((a1), (a2), (m), AF_INET6) |
#define | udp_send_mesg_sockaddr_in(s, m, a) udp_send_sockaddr_in((s), (m), 0, (a)) |
#define | is_same_sockaddr_in(a, b) is_same_sockaddr((struct sockaddr*)&(a), (struct sockaddr*)&(b)) |
use is_same_sockaddr() | |
Functions | |
int | init_network (void) |
void | cleanup_network (void) |
int | _udp_server_socket (int port, struct addrinfo **info, int family) |
call socket(), bind() | |
int | _udp_server_socket_setopt (int, int, const void *, int, struct addrinfo **, int f) |
call socket(), setsockopt(), bind() | |
int | _udp_client_socket (char *host, int, struct addrinfo **, int family) |
call socket() | |
int | _udp_bind (int sock, int port, int family) |
call bind() | |
int | _udp_bind_setopt (int sock, int port, int opt, const void *, int len, int family) |
call setsockopt(), bind() | |
int | _tcp_server_socket (int port, int family) |
call socket(), bind(), listen() | |
int | _tcp_server_socket_setopt (int port, int opt, const void *, int len, int famliy) |
call socket(), setsockopt(), bind(), listen() | |
int | _tcp_server_bind (int port, int family) |
call socket(), bind() | |
int | _tcp_server_bind_setopt (int port, int opt, const void *, int len, int family) |
call socket(), setsockopt(), bind() | |
int | _tcp_client_socket (char *hname, int port, int family) |
call socket(), connect() | |
int | _tcp_client_bind_socket (char *host, int sport, int cport, int family) |
call socket(), bind(), connect() | |
int | _tcp_bind (int sock, int port, int family) |
call bind() | |
int | _tcp_bind_setopt (int sock, int port, int opt, const void *, int len, int family) |
call setsockopt(), bind() | |
int | _tcp_connect (int sock, char *host, int port, int family) |
call connect() | |
int | accept_intr (int, struct sockaddr *, socklen_t *) |
call accept() | |
int | socket_close (int sock) |
call shutdown(), close() | |
int | set_nonblock_socket (int sock) |
int | set_block_socket (int sock) |
int | get_valid_udp_socket (int min, int max, unsigned short *port) |
int | get_valid_tcp_server_socket (int min, int max, unsigned short *port) |
int | get_valid_tcp_client_socket (int min, int max, char *hostname, unsigned short sport, unsigned short *cport) |
int | udp_recv (int, char *, int, struct addrinfo *) |
int | udp_send (int, char *, int, struct addrinfo *) |
int | tcp_recv (int, char *, int) |
int | tcp_send (int, char *, int) |
int | udp_recv_wait (int sock, char *data, int size, struct addrinfo *sv_addr, int tm) |
int | tcp_recv_wait (int sock, char *data, int sz, int tm) |
int | tcp_send_mesgln (int, char *) |
int | tcp_recv_mstream (int sock, char *mesg, int sz, mstream *sb, int tm) |
int | recv_wait (int sock, int tm) |
int | recv_wait_twin (int sock1, int sock2, int tm) |
int | send_wait (int sock, int tm) |
struct sockaddr * | make_sockaddr_bynum (unsigned char *addr, int port, int family) |
IPv4/IPv6 対応 | |
struct sockaddr * | make_sockaddr_bystr (const char *addr, int port) |
IPv4/IPv6 対応 | |
char * | _get_hostname (const char *host, int family) |
IPv4/IPv6 アドレス(文字列), FQDN → ホスト名(文字列) | |
char * | get_hostname_bynum (unsigned char *bin, int family) |
IPv4/IPv6 アドレス(バイナリ)→ ホスト名(文字列) | |
char * | get_hostname_bystr (const char *str) |
IPv4/IPv6 アドレス(文字列) → ホスト名(文字列) | |
char * | get_ipaddr_byname (const char *host, int family) |
ホスト名 → IPv4/IPv6 アドレス(文字列) | |
unsigned char * | get_ipaddr_byname_num (const char *h, int family) |
ホスト名 → IPv4/IPv6 アドレス(バイナリ) | |
char * | get_myipaddr (int family) |
自分の [IPv4/IPv6 ネットワークアドレス]/[ネットマスク](文字列) | |
unsigned char * | get_myipaddr_num (int family) |
自分の [IPv4/IPv6 アドレス],[ネットマスク](バイナリ) | |
char * | _get_localip_bydest (const char *host, int family) |
自分の IPv4/IPv6 アドレス(文字列) | |
unsigned char * | get_mynetaddr_num (int family) |
自分の IPv4/IPv6 ネットワークアドレス(バイナリ) | |
char * | get_mynetaddr (int family) |
自分の IPv4/IPv6 ネットワークアドレス(文字列) | |
unsigned char * | to_address_num (char *, int md, int mk, int family) |
IPv4/IPv6 アドレス(文字列)→ [IPv4/IPv6 アドレス],[ネットマスク](数字8/32Byte) | |
char * | to_address_char (unsigned char *addr, int mask, int family) |
[IPv4/IPv6 アドレス],[ネットマスク](数字8/32Byte)→ IPv4/IPv6 アドレス(文字列) | |
int | is_same_sockaddr (struct sockaddr *addr1, struct sockaddr *addr2) |
int | is_same_network (char *addr1, char *addr2, char *mask) |
int | is_same_network_num (unsigned char *addr1, unsigned char *addr2, unsigned char *mask, int family) |
void | udp_hole_punching (int sock, struct addrinfo *addr, int num) |
int | udp_client_socket_sockaddr_in (char *, int, struct sockaddr_in *) |
use udp_client_socket() | |
int | udp_recv_sockaddr_in (int, char *, int, struct sockaddr_in *) |
use udp_recv() | |
int | udp_send_sockaddr_in (int, char *, int, struct sockaddr_in *) |
use udp_send() | |
int | udp_recv_wait_sockaddr_in (int sock, char *data, int size, struct sockaddr_in *sv_addr, int tm) |
use udp_recv_wait() | |
struct sockaddr_in | get_sockaddr_in (char *hostname, unsigned short cport) |
struct sockaddr_in | get_sockaddr_in_bynum (char *ipnum, unsigned short cport) |
struct sockaddr_in | get_local_sockaddr_in (unsigned short cport) |
unsigned char * | get_ipaddr_num_ipv4 (struct in_addr) |
構造体 → IPv4 アドレス(バイナリ) use get_ipaddr_byname_num() | |
char * | get_ipaddr_ipv4 (struct in_addr) |
構造体 → IPv4 アドレス(文字列) use get_ipaddr_byname() | |
void | udp_hole_punching_sockaddr_in (int sock, struct sockaddr_in addr, int nm) |
use udp_hole_punching() | |
Variables | |
WSADATA | WsaData |
Definition in file network.h.
#define get_hostname | ( | h | ) | _get_hostname((h), AF_UNSPEC) |
#define get_hostname_bynum_ipv4 | ( | n | ) | get_hostname_bynum((n), AF_INET) |
#define get_hostname_bynum_ipv6 | ( | n | ) | get_hostname_bynum((n), AF_INET6) |
#define get_hostname_ipv4 | ( | h | ) | _get_hostname((h), AF_INET) |
#define get_hostname_ipv6 | ( | h | ) | _get_hostname((h), AF_INET6) |
#define get_ipaddr_byname_ipv4 | ( | h | ) | get_ipaddr_byname((h), AF_INET) |
#define get_ipaddr_byname_ipv6 | ( | h | ) | get_ipaddr_byname((h), AF_INET6) |
#define get_ipaddr_byname_num_ipv4 | ( | h | ) | get_ipaddr_byname_num((h), AF_INET) |
#define get_ipaddr_byname_num_ipv6 | ( | h | ) | get_ipaddr_byname_num((h), AF_INET6) |
#define get_localip | ( | ) | _get_localip_bydest("www.google.co.jp", AF_UNSPEC) |
#define get_localip_bydest | ( | h | ) | _get_localip_bydest((h), AF_UNSPEC) |
#define get_localip_bydest_ipv4 | ( | h | ) | _get_localip_bydest((h), AF_INET) |
#define get_localip_bydest_ipv6 | ( | h | ) | _get_localip_bydest((h), AF_INET6) |
#define get_localip_ipv4 | ( | ) | _get_localip_bydest("www.google.co.jp", AF_INET) |
#define get_localip_ipv6 | ( | ) | _get_localip_bydest("www.google.co.jp", AF_INET6) |
#define get_myipaddr_ipv4 | ( | ) | get_myipaddr(AF_INET) |
ループバックでないインターフェイスのIPアドレスと ネットマスクを返す.
ネットマスクが必要ないなら get_localip_ipv4() を使用しても良い.
#define get_myipaddr_ipv6 | ( | ) | get_myipaddr(AF_INET6) |
#define get_myipaddr_num_ipv4 | ( | ) | get_myipaddr_num(AF_INET) |
#define get_myipaddr_num_ipv6 | ( | ) | get_myipaddr_num(AF_INET6) |
#define get_mynetaddr_ipv4 | ( | ) | get_mynetaddr(AF_INET) |
#define get_mynetaddr_ipv6 | ( | ) | get_mynetaddr(AF_INET6) |
#define get_mynetaddr_num_ipv4 | ( | ) | get_mynetaddr_num(AF_INET) |
#define get_mynetaddr_num_ipv6 | ( | ) | get_mynetaddr_num(AF_INET6) |
#define is_same_network_num_ipv4 | ( | a1, | |
a2, | |||
m ) is_same_network_num((a1), (a2), (m), AF_INET) |
数字型アドレス が同じネットワークに属しているかどうかチェックする.
Definition at line 263 of file network.h.
Referenced by is_host_in_list(), and is_ipaddr_num_in_list().
#define is_same_network_num_ipv6 | ( | a1, | |
a2, | |||
m ) is_same_network_num((a1), (a2), (m), AF_INET6) |
#define is_same_sockaddr_in | ( | a, | |
b ) is_same_sockaddr((struct sockaddr*)&(a), (struct sockaddr*)&(b)) |
#define make_sockaddr_bynum_ipv4 | ( | a, | |
p ) make_sockaddr_bynum((a), (p), AF_INET) |
#define make_sockaddr_bynum_ipv6 | ( | a, | |
p ) make_sockaddr_bynum((a), (p), AF_INET6) |
#define socklen_t int |
Definition at line 21 of file network.h.
Referenced by _get_localip_bydest(), udp_recv(), udp_recv_Buffer(), udp_recv_Buffer_sockaddr_in(), and udp_recv_sockaddr_in().
#define tcp_bind_ipv4 | ( | s, | |
p ) _tcp_bind((s), (p), AD_INET) |
#define tcp_bind_ipv6 | ( | s, | |
p ) _tcp_bind((s), (p), AD_INET6) |
#define tcp_bind_setopt | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_UNSPEC) |
#define tcp_bind_setopt_ipv4 | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_INET) |
#define tcp_bind_setopt_ipv6 | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _tcp_bind_setopt((s), (p), (o), (v), (l), AF_INET6) |
#define tcp_client_bind_socket | ( | h, | |
s, | |||
c ) _tcp_client_bind_socket((h), (c), (s), AF_UNSPEC) |
Definition at line 134 of file network.h.
Referenced by get_valid_tcp_client_socket().
#define tcp_client_bind_socket_ipv4 | ( | h, | |
s, | |||
c ) _tcp_client_bind_socket((h), (c), (s), AF_INET) |
#define tcp_client_bind_socket_ipv6 | ( | h, | |
s, | |||
c ) _tcp_client_bind_socket((h), (c), (s), AF_INET6) |
#define tcp_client_socket | ( | h, | |
p ) _tcp_client_socket((h), (p), AF_UNSPEC) |
Definition at line 130 of file network.h.
Referenced by simple_web_proxy().
#define tcp_client_socket_ipv4 | ( | h, | |
p ) _tcp_client_socket((h), (p), AF_INET) |
#define tcp_client_socket_ipv6 | ( | h, | |
p ) _tcp_client_socket((h), (p), AF_INET6) |
#define tcp_connect | ( | s, | |
h, | |||
p ) _tcp_connect((s), (h), (p), AF_UNSPEC) |
#define tcp_connect_ipv4 | ( | s, | |
h, | |||
p ) _tcp_connect((s), (h), (p), AF_INET) |
#define tcp_connect_ipv6 | ( | s, | |
h, | |||
p ) _tcp_connect((s), (h), (p), AF_INET6) |
#define tcp_server_bind | ( | p | ) | _tcp_server_bind((p), AF_UNSPEC) |
#define tcp_server_bind_ipv4 | ( | p | ) | _tcp_server_bind((p), AF_INET) |
#define tcp_server_bind_ipv6 | ( | p | ) | _tcp_server_bind((p), AF_INET6) |
#define tcp_server_bind_setopt | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_bind_setopt((p), (o), (v), (l), AF_UNSPEC) |
#define tcp_server_bind_setopt_ipv4 | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_bind_setopt((p), (o), (v), (l), AF_INET) |
#define tcp_server_bind_setopt_ipv6 | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_bind_setopt((p), (o), (v), (l), AF_INET6) |
#define tcp_server_socket | ( | p | ) | _tcp_server_socket((p), AF_UNSPEC) |
Definition at line 108 of file network.h.
Referenced by get_valid_tcp_server_socket().
#define tcp_server_socket_ipv4 | ( | p | ) | _tcp_server_socket((p), AF_INET) |
#define tcp_server_socket_ipv6 | ( | p | ) | _tcp_server_socket((p), AF_INET6) |
#define tcp_server_socket_setop | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_socket_setopt((p), (o), (v), (l), AF_UNSPEC) |
#define tcp_server_socket_setop_ipv4 | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_socket_setopt((p), (o), (v), (l), AF_INET) |
#define tcp_server_socket_setop_ipv6 | ( | p, | |
o, | |||
v, | |||
l ) _tcp_server_socket_setopt((p), (o), (v), (l), AF_INET6) |
#define to_address_char16_ipv6 | ( | a | ) | to_address_char((a), 0, AF_INET6) |
#define to_address_char32_ipv6 | ( | a | ) | to_address_char((a), 1, AF_INET6) |
#define to_address_char4_ipv4 | ( | a | ) | to_address_char((a), 0, AF_INET) |
#define to_address_char8_ipv4 | ( | a | ) | to_address_char((a), 1, AF_INET) |
数字型の IPアドレス n 8Byteを文字型の [IPアドレス]/[ネットマスク] に変換する.
n は必ずネットマスクの情報を含み,長さが 8Byteでないといけない.8Byteより少ない場合は 恐らくセグメンテーションエラーを起こす.
to_address_num8()と対で使うのが安全.
Definition at line 251 of file network.h.
Referenced by to_ipaddress_list().
#define to_address_num16_ipv6 | ( | a, | |
m ) to_address_num((a), (m), 0, AF_INET6) |
#define to_address_num32_ipv6 | ( | a, | |
m ) to_address_num((a), (m), 1, AF_INET6) |
#define to_address_num4_ipv4 | ( | a, | |
m ) to_address_num((a), (m), 0, AF_INET) |
#define to_address_num8_ipv4 | ( | a, | |
m ) to_address_num((a), (m), 1, AF_INET) |
文字型のアドレス [IPアドレス]/[ネットマスク] (例:202.26.159.140/255.255.255.0)を 数字型のアドレス(unsigned char* num[8])8Byte へ変換する.
省略された場所は 0とみなされる(例:202.26/255 → 202.26.0.0/255.0.0.0)
ネットマスク部全体が省略された場合は IPアドレス部に依存する.(202.26. → 202.26.0.0/255.255.0.0)
CIDER形式にも対応.ただし,ネットマスク部の妥当性はチェックしない.
Definition at line 249 of file network.h.
Referenced by is_host_in_list(), is_ipaddr_num_in_list(), print_address_in_list(), and to_ipaddress_list().
#define udp_bind_ipv4 | ( | s, | |
p ) _udp_bind((s), (p), AF_INET) |
#define udp_bind_ipv6 | ( | s, | |
p ) _udp_bind((s), (p), AF_INET6) |
#define udp_bind_setopt | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _udp_bind_setopt((s), (p), (o), (v), (l), AF_UNSPEC) |
#define udp_bind_setopt_ipv4 | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _udp_bind_setopt((s), (p), (o), (v), (l), AF_INET) |
#define udp_bind_setopt_ipv6 | ( | s, | |
p, | |||
o, | |||
v, | |||
l ) _udp_bind_setopt((s), (p), (o), (v), (l), AF_INET6) |
#define udp_client_socket | ( | h, | |
p, | |||
a ) _udp_client_socket((h), (p), (a), AF_UNSPEC) |
#define udp_client_socket_ipv4 | ( | h, | |
p, | |||
a ) _udp_client_socket((h), (p), (a), AF_INET) |
#define udp_client_socket_ipv6 | ( | h, | |
p, | |||
a ) _udp_client_socket((h), (p), (a), AF_INET6) |
#define udp_send_mesg | ( | s, | |
m, | |||
a ) udp_send((s), (m), 0, (a)) |
#define udp_send_mesg_sockaddr_in | ( | s, | |
m, | |||
a ) udp_send_sockaddr_in((s), (m), 0, (a)) |
#define udp_server_socket | ( | p, | |
a ) _udp_server_socket((p), (a), AF_UNSPEC) |
Definition at line 82 of file network.h.
Referenced by get_valid_udp_socket().
#define udp_server_socket_ipv4 | ( | p | ) | _udp_server_socket((p), NULL, AF_INET) |
#define udp_server_socket_ipv6 | ( | p, | |
a ) _udp_server_socket((p), (a), AF_INET6) |
#define udp_server_socket_setopt | ( | p, | |
o, | |||
v, | |||
l, | |||
a ) _udp_server_socket_setopt((p), (o), (v), (l), (a), AF_UNSPEC) |
#define udp_server_socket_setopt_ipv4 | ( | p, | |
o, | |||
v, | |||
l ) _udp_server_socket_setopt((p), (o), (v), (l), NULL, AF_INET) |
#define udp_server_socket_setopt_ipv6 | ( | p, | |
o, | |||
v, | |||
l, | |||
a ) _udp_server_socket_setopt((p), (o), (v), (l), (a), AF_INET6) |
char * _get_hostname | ( | const char * | addr, |
int | family ) |
char* _get_hostname(const char* addr, int family)
IPv4/IPv6 アドレス(文字列)からホスト名を逆引きする.
FQDNを指定した場合は,正引きして逆引きするので,FQDNのチェックに使用できる.
addr | IPアドレス(文字列)または FQDN |
family | プロトコルファミリー(AF_INET/AF_INET6) |
Definition at line 1729 of file network.cpp.
References LNAME.
char * _get_localip_bydest | ( | const char * | dest, |
int | family ) |
char* _get_localip_bydest(const char* dest, int family)
接続先を指定して,そこへ接続する インターフェイスのIPアドレスを得る.自分自身の IPアドレスを得るもう一つの方法.
dest | 接続先の IPv4/IPv6 アドレス または FQDN |
family | プロトコルファミリー(AF_INET/AF_INET6) |
Definition at line 2064 of file network.cpp.
References LEN_IPADDR, LEN_IPADDR6, socket_close(), and socklen_t.
int _tcp_bind | ( | int | sofd, |
int | port, | ||
int | family ) |
int _tcp_bind(int sofd, int port, int family)
IPv4/IPv6 のTCPソケットにポートをバインドする.
sofd | バインドするソケットの記述子. |
port | ポート番号 |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 834 of file network.cpp.
References itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, and socket_close().
int _tcp_bind_setopt | ( | int | sofd, |
int | port, | ||
int | opt, | ||
const void * | optval, | ||
int | optlen, | ||
int | family ) |
int _tcp_bind_setopt(int sofd, int port, int opt, const void* optval, int optlen, int family)
IPv4/IPv6 のTCPソケットにポートをバインドする.オプションの指定(setsockopt)が可能.
sofd | バインドするソケットの記述子. |
port | ポート番号 |
opt | オプションの種類 |
optval | オプションデータ |
optlen | optval の長さ |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_OPTION_ERROR | オプションの設定に失敗. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 886 of file network.cpp.
References itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, and socket_close().
int _tcp_client_bind_socket | ( | char * | hostname, |
int | sport, | ||
int | cport, | ||
int | family ) |
int _tcp_client_bind_socket(char* hostname, int sport, int cport, int family)
IPv4/IPv6 のTCPのクライアントソケットを作り,サーバに接続する.
この関数内で呼び出されるネットワーク関数: socket(), bind(), getaddrinfo(), connect()
hostname | サーバ名 |
sport | サーバポート番号 |
cport | 自分のポート番号 |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
JBXL_NET_CONNECT_ERROR | 接続に失敗. |
Definition at line 767 of file network.cpp.
References itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_CONNECT_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_SOCKET_ERROR, and socket_close().
int _tcp_client_socket | ( | char * | hostname, |
int | port, | ||
int | family ) |
int _tcp_client_socket(char* hostname, int port, int family)
IPv4/IPv6 のTCPのクライアントソケットを作り,サーバに接続する.
この関数内で呼び出されるネットワーク関数: socket(), getaddrinfo(), connect()
hostname | サーバ名 |
port | サーバポート番号 |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
JBXL_NET_CONNECT_ERROR | 接続に失敗. |
Definition at line 712 of file network.cpp.
References itostr_ts(), JBXL_NET_CONNECT_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_SOCKET_ERROR, and socket_close().
int _tcp_connect | ( | int | sock, |
char * | host, | ||
int | port, | ||
int | family ) |
Definition at line 949 of file network.cpp.
References itostr_ts(), JBXL_NET_CONNECT_ERROR, JBXL_NET_INFO_ERROR, and socket_close().
int _tcp_server_bind | ( | int | port, |
int | family ) |
int _tcp_server_bind(int port, int family)
IPv4/IPv6 のTCPのサーバのソケット記述子を作り,バインドする. tcp_server_socket() との違いは listen()関数を呼び出さない点にある.
この関数内で呼び出されるネットワーク関数: socket(), bind()
port | ポート番号. |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 562 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, set_nonblock_socket(), socket_close(), and TRUE.
int _tcp_server_bind_setopt | ( | int | port, |
int | opt, | ||
const void * | optval, | ||
int | optlen, | ||
int | family ) |
int _tcp_server_bind_setopt(int port, int opt, const void* optval, int optlen, int family)
IPv4/IPv6 のTCPのサーバのソケット記述子を作り,バインドする.オプションの指定(setsockopt)が可能. tcp_server_socket() との違いは listen()関数を呼び出さない点にある.
この関数内で呼び出されるネットワーク関数: socket(), setsockopt(), bind()
port | ポート番号 |
opt | オプションの種類 |
optval | オプションデータ |
optlen | optval の長さ |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_OPTION_ERROR | オプションの設定に失敗. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 639 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, set_nonblock_socket(), socket_close(), and TRUE.
int _tcp_server_socket | ( | int | port, |
int | family ) |
int _tcp_server_socket(int port, int family)
IPv4/IPv6 のTCPのサーバソケットを作り,リッスンにより接続要求を受けられる状態にする.
この関数に続いて accept()関数を呼ぶ事により,実際の接続待ち状態となる.
この関数内で呼び出されるネットワーク関数は socket(), bind(), listen()
port | ポート番号.マイナスの場合は ノンブロックとなる. |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
JBXL_NET_LISTEN_ERROR | リッスンに失敗. |
Definition at line 396 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_LISTEN_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, set_nonblock_socket(), socket_close(), and TRUE.
int _tcp_server_socket_setopt | ( | int | port, |
int | opt, | ||
const void * | optval, | ||
int | optlen, | ||
int | family ) |
int _tcp_server_socket_setopt(int port, int opt, const void* optval, int optlen, int family)
IPv4/IPv6 のTCPのサーバソケットを作り,リッスンにより接続要求を受けられる状態にする.
この関数に続いて accept()関数を呼ぶ事により,実際の接続待ち状態となる. オプションの指定(setsockopt)が可能.
この関数内で呼び出されるネットワーク関数は socket(), setsockopt(), bind(), listen()
port | ポート番号.マイナスの場合は ノンブロックとなる. |
opt | オプションの種類 |
optval | オプションデータ |
optlen | optval の長さ |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_OPTION_ERROR | オプションの設定に失敗. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
JBXL_NET_LISTEN_ERROR | リッスンに失敗. |
Definition at line 482 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_LISTEN_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, set_nonblock_socket(), socket_close(), and TRUE.
int _udp_bind | ( | int | sofd, |
int | port, | ||
int | family ) |
int _udp_bind(int sofd, int port, int family)
UDPソケットにポートをバインドする.
sofd | バインドするソケットの記述子. |
port | ポート番号 |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 283 of file network.cpp.
References itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, and socket_close().
int _udp_bind_setopt | ( | int | sofd, |
int | port, | ||
int | opt, | ||
const void * | optval, | ||
int | optlen, | ||
int | family ) |
int _udp_bind_setopt(int sofd, int port, int opt, const void* optval, int optlen, int family)
IPv4/IPv6 のUDPソケットにポートをバインドする.オプションの指定(setsockopt)が可能.
sofd | バインドするソケットの記述子. |
port | ポート番号 |
opt | オプションの種類 |
optval | オプションデータ |
optlen | optval の長さ |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_OPTION_ERROR | オプションの設定に失敗. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 332 of file network.cpp.
References itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, and socket_close().
int _udp_client_socket | ( | char * | hostname, |
int | port, | ||
struct addrinfo ** | sv_addr, | ||
int | family ) |
int _udp_client_socket(char* hostname, int port, struct addrinfo** sv_addr, int family)
UDPのクライアントソケットを作る. 正常終了した場合, *sv_addrにサーバの情報が格納される.
この関数内で呼び出されるネットワーク関数: socket(), getaddrinfo()
hostname | サーバ名 |
port | サーバポート番号 |
sv_addr | addrinfo 構造体へのポインタへのポインタが返る.要 freeaddrinfo(*sv_addr) |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 237 of file network.cpp.
References itostr_ts(), JBXL_NET_INFO_ERROR, and JBXL_NET_SOCKET_ERROR.
int _udp_server_socket | ( | int | port, |
struct addrinfo ** | sv_addr, | ||
int | family ) |
int _udp_server_socket(int port, struct addrinfo** sv_addr, int family)
IPv4/IPv6 の UDPサーバソケットを作り,接続待ち状態になる.
この関数内で呼び出されるネットワーク関数: socket(), bind()
port | ポート番号 |
sv_addr | addrinfo 構造体へのポインタへのポインタが返る.要 freeaddrinfo(*sv_addr) |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 70 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, OFF, ON, set_nonblock_socket(), socket_close(), and TRUE.
int _udp_server_socket_setopt | ( | int | port, |
int | opt, | ||
const void * | optval, | ||
int | optlen, | ||
struct addrinfo ** | sv_addr, | ||
int | family ) |
IPv4/IPv6 の UDPサーバソケットを作り,接続待ち状態になる.オプションの指定(setsockopt)が可能.
この関数内で呼び出されるネットワーク関数: socket(), setsockopt(), bind()
port | ポート番号 |
opt | オプションの種類 |
optval | オプションデータ |
optlen | optval の長さ |
sv_addr | addrinfo 構造体へのポインタへのポインタが返る.要 freeaddrinfo(*sv_addr) |
family | プロトコルファミリー(AF_INET/AF_INET6/AF_UNSPEC). AF_UNSPEC の場合は先ずIPv6で接続を試み,不可ならIPv4で接続する. |
0以上 | 作成されたソケット記述子. |
JBXL_NET_SOCKET_ERROR | ソケットが作成できなかった. |
JBXL_NET_OPTION_ERROR | オプションの設定に失敗. |
JBXL_NET_BIND_ERROR | バインドに失敗. |
JBXL_NET_INFO_ERROR | ホスト情報の取得に失敗. |
Definition at line 156 of file network.cpp.
References FALSE, itostr_ts(), JBXL_NET_BIND_ERROR, JBXL_NET_INFO_ERROR, JBXL_NET_OPTION_ERROR, JBXL_NET_SOCKET_ERROR, OFF, ON, set_nonblock_socket(), socket_close(), and TRUE.
int accept_intr | ( | int | sock, |
struct sockaddr * | cl_addr, | ||
socklen_t * | cdlen ) |
int accept_intr(int sock, struct sockaddr* cl_addr, socklen_t* cdlen)
accept()でブロック中に割り込みが掛かって,accept()が失敗で終了しても 再施行できるようにするためのラッパー関数 (for Solaris)
sock | ソケット |
cl_addr | ソケットの情報が入る sockaddr 構造体へのポインタ |
cdlen | sockaddr 構造体(*cl_addr)のサイズ |
0以上 | accept() で作成されたソケット記述子. |
-1 | エラー. |
Definition at line 995 of file network.cpp.
void cleanup_network | ( | void | ) |
Definition at line 40 of file network.cpp.
char * get_hostname_bynum | ( | unsigned char * | num, |
int | family ) |
char* get_hostname_bynum(unsigned char* num, int family)
IPv4/IPv6 アドレス(バイナリ)からホスト名を逆引きする.
num | IPv4/IPv6 アドレス(バイナリ) |
family | アドレスファミリー(AF_INET/AF_INET6) |
Definition at line 1642 of file network.cpp.
References LNAME, and make_sockaddr_bynum().
char * get_hostname_bystr | ( | const char * | addr | ) |
char* get_hostname_bystr(const char* addr)
IPv4/IPv6 アドレス(文字列)からホスト名を逆引きする.
addr | IPv4/IPv6 アドレス(文字列) |
Definition at line 1684 of file network.cpp.
References LNAME, and make_sockaddr_bystr().
char * get_ipaddr_byname | ( | const char * | hostname, |
int | family ) |
char* get_ipaddr_byname(const char* hostname, int family)
ホスト名から IPv4/IPv6 アドレス(文字列)を獲得する.
hostname | ホスト名 |
family | IPのアドレスファミリー AF_INET/AF_INET6 |
Definition at line 1781 of file network.cpp.
References get_ipaddr_byname_num(), LEN_IPADDR, and LEN_IPADDR6.
Referenced by simple_web_proxy().
unsigned char * get_ipaddr_byname_num | ( | const char * | hostname, |
int | family ) |
unsigned char* get_ipaddr_byname_num(const char* hostname, int family)
ホスト名から IPv4/IPv6 アドレス(バイナリ)を獲得する.
hostname | ホスト名 |
family | IPのアドレスファミリー AF_INET/AF_INET6 |
Definition at line 1813 of file network.cpp.
Referenced by get_ipaddr_byname(), and to_address_num().
char * get_ipaddr_ipv4 | ( | struct in_addr | sin_addr | ) |
char* get_ipaddr_ipv4(struct in_addr sin_addr)
in_addr構造体から IPアドレスを獲得する.
sin_addr | sockaddr_in 構造体の sin_addr メンバ. |
Definition at line 2685 of file network.cpp.
References snprintf.
unsigned char * get_ipaddr_num_ipv4 | ( | struct in_addr | sin_addr | ) |
unsigned char* get_ipaddr_num_ipv4(struct in_addr sin_addr)
in_addr 構造体から IPアドレスを獲得する.
sin_addr | sockaddr_in 構造体の sin_addr メンバ. |
Definition at line 2717 of file network.cpp.
struct sockaddr_in get_local_sockaddr_in | ( | unsigned short | cport | ) |
Definition at line 2654 of file network.cpp.
char * get_myipaddr | ( | int | family | ) |
Definition at line 1858 of file network.cpp.
References LEN_IPADDR, LEN_IPADDR6, LNAME, OFF, ON, and snprintf.
Referenced by get_myipaddr_num().
unsigned char * get_myipaddr_num | ( | int | family | ) |
Definition at line 2008 of file network.cpp.
References get_myipaddr().
Referenced by get_mynetaddr_num().
char * get_mynetaddr | ( | int | family | ) |
char* get_mynetaddr(int family)
自分のネットワークアドレスを返す
family | プロトコルファミリー(AF_INET/AF_INET6) |
Definition at line 2142 of file network.cpp.
References get_mynetaddr_num(), LEN_IPADDR, and LEN_IPADDR6.
unsigned char * get_mynetaddr_num | ( | int | family | ) |
unsigned char* get_mynetaddr_num(int family)
自分のネットワークアドレスを返す
Definition at line 2177 of file network.cpp.
References get_myipaddr_num().
Referenced by get_mynetaddr().
struct sockaddr_in get_sockaddr_in | ( | char * | hostname, |
unsigned short | cport ) |
Definition at line 2619 of file network.cpp.
Referenced by get_sockaddr_in_Buffer().
struct sockaddr_in get_sockaddr_in_bynum | ( | char * | ipnum, |
unsigned short | cport ) |
Definition at line 2641 of file network.cpp.
int get_valid_tcp_client_socket | ( | int | min, |
int | max, | ||
char * | hostname, | ||
unsigned short | sport, | ||
unsigned short * | cport ) |
Definition at line 1124 of file network.cpp.
References tcp_client_bind_socket.
int get_valid_tcp_server_socket | ( | int | min, |
int | max, | ||
unsigned short * | port ) |
Definition at line 1102 of file network.cpp.
References tcp_server_socket.
int get_valid_udp_socket | ( | int | min, |
int | max, | ||
unsigned short * | port ) |
Definition at line 1078 of file network.cpp.
References udp_server_socket.
int init_network | ( | void | ) |
Definition at line 26 of file network.cpp.
References WsaData.
int is_same_network | ( | char * | addr1, |
char * | addr2, | ||
char * | mask ) |
int is_same_network(char* addr1, char* addr2, char* mask)
文字型アドレス addr1 と addr2が同じネットワークに属しているかどうかチェックする.
addr1, addr2 は FQDNでも可.
addr1 | 比較するアドレス(文字型).FQDN は不可 |
addr2 | 比較するアドレス(文字型).FQDN は不可 |
mask | ネットマスク(文字型) |
TRUE | 同じネットワークである. |
FALSE | 同じネットワークでない. |
Definition at line 2283 of file network.cpp.
References FALSE, is_same_network_num(), and to_address_num().
int is_same_network_num | ( | unsigned char * | addr1, |
unsigned char * | addr2, | ||
unsigned char * | mask, | ||
int | family ) |
int is_same_network_num(unsigned char* addr1, unsigned char* addr2, unsigned char* mask, int family)
数字型アドレス addr1 と addr2が同じネットワークに属しているかどうかチェックする.
addr1 | 比較するアドレス(数字型)4/16Byte |
addr2 | 比較するアドレス(数字型)4/16Byte |
mask | ネットマスク(数字型)4/16Byte |
family | アドレスファミリー (AF_INET/AF_INET6) |
TRUE | 同じネットワークである. |
FALSE | 同じネットワークでない |
Definition at line 2331 of file network.cpp.
Referenced by is_same_network().
int is_same_sockaddr | ( | struct sockaddr * | addr1, |
struct sockaddr * | addr2 ) |
int is_same_sockaddr(struct sockaddr* addr1, struct sockaddr* addr2)
addr1 と addr2が格納する IPアドレスとポート番号が同じかどうか検査する
addr1 | 比較する sockaddr 構造体へのポインタ |
addr2 | 比較する sockaddr 構造体へのポインタ |
TRUE | 同じホスト |
FALSE | 違うホスト |
Definition at line 2219 of file network.cpp.
struct sockaddr * make_sockaddr_bynum | ( | unsigned char * | addr, |
int | port, | ||
int | family ) |
struct sockaddr* make_sockaddr_bynum(unsigned char* addr, int port, int family)
バイナリの IPv4/IPv6 アドレスとポート番号から 有効な struct sockaddr を作り出す
addr | バイナリのIPアドレス(IPv4/IPv6) |
port | ポート番号 |
family | プロトコルファミリー(AF_INET/AF_INET6) |
Definition at line 1556 of file network.cpp.
Referenced by get_hostname_bynum(), and make_sockaddr_bystr().
struct sockaddr * make_sockaddr_bystr | ( | const char * | addr, |
int | port ) |
struct sockaddr* make_sockaddr_bystr(const char* addr, int port)
文字列の IPv4/IPv6 アドレスとポート番号から 有効な struct sockaddr を作り出す
addr | 文字列のIPアドレス(IPv4/IPv6) |
port | ポート番号 |
Definition at line 1605 of file network.cpp.
References make_sockaddr_bynum().
Referenced by get_hostname_bystr().
int recv_wait | ( | int | sock, |
int | tm ) |
int recv_wait(int sock, int tm)
簡易 受信 wait. ソケットにデータが受信されるまで待つ.スレッド対応
sock | 監視するソケット |
tm | タイムアウトの秒数 |
TRUE | バッファにデータがある. |
FALSE | タイムアウトした. |
Definition at line 1443 of file network.cpp.
Referenced by recv_http_closed(), tcp_recv_wait(), udp_recv_wait(), udp_recv_wait_sockaddr_in(), and www2browser_relay().
int recv_wait_twin | ( | int | sock1, |
int | sock2, | ||
int | tm ) |
int recv_wait_twin(int sock1, int sock2, int tm)
簡易 受信 wait. 二つのソケット sock1, sock2 にデータが受信されるまで待つ.スレッド対応
sock1 | 監視するソケット その1 |
sock2 | 監視するソケット その2 |
tm | タイムアウトの秒数 |
0 | タイムアウトした. |
1 | sock1 のバッファにデータがある. |
2 | sock2 のバッファにデータがある. |
3 | sock1 と sock2 のバッファにデータがある. |
Definition at line 1480 of file network.cpp.
References Max.
int send_wait | ( | int | sock, |
int | tm ) |
int send_wait(int sock, int tm)
簡易 送信 wait. データが送信可能になるまで待つ.スレッド対応
sock | 監視するソケット |
tm | タイムアウトの秒数 |
TRUE | バッファにデータがある. |
FALSE | タイムアウトした. |
Definition at line 1518 of file network.cpp.
int set_block_socket | ( | int | sock | ) |
int set_block_socket(int sock)
Definition at line 1060 of file network.cpp.
int set_nonblock_socket | ( | int | sock | ) |
int set_nonblock_socket(int sock)
Definition at line 1043 of file network.cpp.
Referenced by _tcp_server_bind(), _tcp_server_bind_setopt(), _tcp_server_socket(), _tcp_server_socket_setopt(), _udp_server_socket(), and _udp_server_socket_setopt().
int socket_close | ( | int | sofd | ) |
未送信のデータを破棄して,ソケットを完全に閉じる.
sofd | クローズしたいソケット記述子を指定. |
1以上 | 最後に受信したバイト数 |
0 | 正常切断. |
-1 | エラー |
Definition at line 1022 of file network.cpp.
Referenced by _get_localip_bydest(), _tcp_bind(), _tcp_bind_setopt(), _tcp_client_bind_socket(), _tcp_client_socket(), _tcp_connect(), _tcp_server_bind(), _tcp_server_bind_setopt(), _tcp_server_socket(), _tcp_server_socket_setopt(), _udp_bind(), _udp_bind_setopt(), _udp_server_socket(), _udp_server_socket_setopt(), simple_web_proxy(), and udp_client_socket_sockaddr_in().
int tcp_recv | ( | int | sock, |
char * | rmsg, | ||
int | size ) |
int tcp_recv(int sock, char* rmsg, int size)
recv()をラッピングした関数.TCP経由でデータを受信する.
sock | ソケット記述子 |
rmsg | 受信用データバッファ.関数内で初期化される. |
size | データバッファのサイズ |
1以上 | 受信したバイト数. |
0 | 正常切断. |
JBXL_NET_RECV_ERROR | 失敗 |
Definition at line 1226 of file network.cpp.
References JBXL_NET_RECV_ERROR.
int tcp_recv_mstream | ( | int | sock, |
char * | mesg, | ||
int | sz, | ||
mstream * | sb, | ||
int | tm ) |
int tcp_recv_mstream(int sock, char* mesg, int sz, mstream* sb, int tm)
TCP経由でメッセージ(文字列)を受信する.受信メッセージはメッセージストリームバッファに一旦バッファリングされ, この関数により一行ずつ読み出される.mesgには最大 sz-1文字が格納される. もし,バッファ中の一行のデータが sz-1より大きい場合は,はみ出した部分は捨てられる.
mesgに格納される時,行中の改行コードは削除され,行末には必ず '\0' が入る. タイムアウトの設定が可能でタイムアウトに 0を指定した場合, 呼び出した時点で 読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る).
メッセージストリームのバッファ部が確保されていない場合は,最初に呼び出された時点で確保される. 一旦この関数を使用して,受信データをバッファリングしたら,ソケットをクローズするまで, 読み取りには必ず同じストリームを使用してこの関数を呼び出さばければならない. そうで無い場合は受信データの整合性は保証されない.
sock | ソケット記述子 |
mesg | 受信用データバッファ.予め十分なメモリ領域を確保しておく. |
sz | データバッファのサイズ |
sb | リングバッファ型のストリームバッファ. バッファ部が確保されていなければ,自動的に確保される. |
tm | タイムアウト時間.秒単位. |
1以上 | mesgに格納したメッセージのバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_NET_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_MALLOC_ERROR | メッセージバッファ部が無いので確保しようとしたが,確保に失敗した. |
JBXL_NET_BUF_ERROR | メッセージバッファにデータは存在するはずだが,原因不明の理由により獲得に失敗した. |
JBXL_NET_BUFSZ_ERROR | メッセージバッファ中のデータの長さが,mesgの長さより大きい.はみ出した部分は捨てられた. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1395 of file network.cpp.
References get_mstream(), JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, JBXL_NET_BUF_ERROR, JBXL_NET_BUFSZ_ERROR, JBXL_NET_RECV_ERROR, make_mstream, put_mstream(), RECVBUFSZ, and tcp_recv_wait().
int tcp_recv_wait | ( | int | sock, |
char * | mesg, | ||
int | sz, | ||
int | tm ) |
int tcp_recv_wait(int sock, char* mesg, int sz, int tm)
TCP経由でデータを受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る).
sock | ソケット記述子 |
mesg | 受信用データバッファ.関数内で初期化される. |
sz | データバッファのサイズ |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_NET_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1317 of file network.cpp.
References JBXL_NET_RECV_ERROR, JBXL_NET_RECV_TIMEOUT, and recv_wait().
Referenced by tcp_recv_Buffer_wait(), and tcp_recv_mstream().
int tcp_send | ( | int | sock, |
char * | smsg, | ||
int | size ) |
int tcp_send(int sock, char* smsg, int size)
send()をラッピングした関数.TCP経由でデータを送る.
データ(smsg)のサイズ sizeに0以下を指定した場合は,smsgは文字列であると見なして,サイズを自動的に計算する.
sock | ソケット記述子 |
smsg | 送信するデータ |
size | 送信するデータ(smsg)のサイズ.サイズが 0以下の場合は smsgは文字列であるとみなす. |
0以上 | 送信したバイト数. |
JBXL_NET_SEND_ERROR | 失敗 |
Definition at line 1252 of file network.cpp.
References JBXL_NET_SEND_ERROR.
Referenced by send_http_passwd_req(), send_http_res_file(), and simple_web_proxy().
int tcp_send_mesgln | ( | int | sock, |
char * | mesg ) |
int tcp_send_mesgln(int sock, char* mesg)
TCPメッセージ(文字列)に改行(\r\n)を付け加えて送信する.
sock | ソケット記述子 |
mesg | 送信用メッセージ |
0以上 | 送信したバイト数. |
JBXL_NET_SEND_ERROR | 失敗. |
Definition at line 1345 of file network.cpp.
References JBXL_NET_SEND_ERROR.
char * to_address_char | ( | unsigned char * | addr, |
int | mask, | ||
int | family ) |
char* to_address_char(unsigned char* addr, int mask, int family)
数字型の IPv4/IPv6 アドレス(サブネット付き)8/32Byteを文字型の [IPアドレス]/[ネットマスク] に変換する.
addr は必ずネットマスクの情報を含み,長さが 8/32Byteでないといけない.
to_address_num()と対で使うのが安全.
addr | 変換するバイバリ型のIPアドレス |
mask | 0: サブネットマスクの処理をしない. |
mask | 0以外: サブネットマスクの処理を行う. |
family | アドレスファミリー (AF_INET/AF_INET6) |
Definition at line 2496 of file network.cpp.
References LEN_IPADDR, and LEN_IPADDR6.
unsigned char * to_address_num | ( | char * | addr, |
int | mode, | ||
int | mask, | ||
int | family ) |
unsigned char* to_address_num(char* addr, int mode, int mask, int family)
文字型のアドレス [IPアドレス]/[ネットマスク] (例:202.26.159.140/255.255.255.0)を 数字型のアドレス(unsigned char* num)8/32Byte へ変換する.
省略された場所は 0とみなされる(例:202.26/255 → 202.26.0.0/255.0.0.0)
ネットマスク部全体が省略された場合は IPアドレス部に依存する.(202.26. → 202.26.0.0/255.255.0.0)
CIDER形式にも対応.ただし,ネットマスク部の妥当性はチェックしない.
addr | 変換する文字型のIPアドレス または FQDN |
mode | 0: IPアドレス以外のもの(英字)は NULL を返す. |
mode | 0以外: FQDNはIPアドレスに変換して返す(時間がかかる) |
mask | 0: サブネットマスクの処理をしない. |
mask | 0以外: サブネットマスクの処理を行う. |
family | アドレスファミリー (AF_INET/AF_INET6) |
Definition at line 2373 of file network.cpp.
References awk(), get_ipaddr_byname_num(), Max, Min, OFF, and ON.
Referenced by is_same_network().
int udp_client_socket_sockaddr_in | ( | char * | hostname, |
int | port, | ||
struct sockaddr_in * | sv_addr ) |
Definition at line 2553 of file network.cpp.
References JBXL_NET_INFO_ERROR, JBXL_NET_SOCKET_ERROR, and socket_close().
void udp_hole_punching | ( | int | sock, |
struct addrinfo * | addr, | ||
int | nm ) |
void udp_hole_punching(int sock, struct sockaddr_in addr, int nm)
sock を使って,addrへ nmバイトの NULLデータを送信する.
sock | ソケット記述子 |
addr | 相手のホストの情報が格納されて sockaddr_in 構造体 |
nm | 送信するデータ(NULL)の長さ |
Definition at line 2534 of file network.cpp.
References LBUF, and udp_send().
void udp_hole_punching_sockaddr_in | ( | int | sock, |
struct sockaddr_in | addr, | ||
int | nm ) |
void udp_hole_punching_sockaddr_in(int sock, struct sockaddr_in addr, int nm)
sock を使って,addrへ nmバイトの NULLデータを送信する.
sock | ソケット記述子 |
addr | 相手のホストの情報が格納されて sockaddr_in 構造体 |
nm | 送信するデータ(NULL)の長さ |
Definition at line 2741 of file network.cpp.
References LBUF, and udp_send_sockaddr_in().
int udp_recv | ( | int | sock, |
char * | rmsg, | ||
int | size, | ||
struct addrinfo * | sv_addr ) |
int udp_recv(int sock, char* rmsg, int size, struct addrinfo* sv_addr)
recvform() をラッピングした関数.UDPデータを受信する.
sock | ソケット記述子 |
rmsg | 受信用データバッファ.関数内で初期化される. |
size | データバッファのサイズ |
sv_addr | サーバの情報が格納された addrinfo 構造体へのポインタ. |
1以上 | 受信したバイト数. |
0 | 正常切断. |
JBXL_NET_RECV_ERROR | 失敗 |
JBXL_ARGS_ERROR | 不正な引数 |
Definition at line 1166 of file network.cpp.
References JBXL_ARGS_ERROR, JBXL_NET_RECV_ERROR, and socklen_t.
Referenced by udp_recv_wait().
int udp_recv_sockaddr_in | ( | int | sock, |
char * | rmsg, | ||
int | size, | ||
struct sockaddr_in * | sv_addr ) |
Definition at line 2578 of file network.cpp.
References socklen_t.
Referenced by udp_recv_wait_sockaddr_in().
int udp_recv_wait | ( | int | sock, |
char * | rmsg, | ||
int | size, | ||
struct addrinfo * | sv_addr, | ||
int | tm ) |
int udp_recv_wait(int sock, char* rmsg, int size, struct addrinfo* sv_addr, int tm)
UDP経由でデータを受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る).
sock | ソケット記述子 |
rmsg | 受信用データバッファ.関数内で初期化される. |
size | データバッファのサイズ |
sv_addr | サーバの情報が格納された addrinfo 構造体へのポインタ. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | 正常切断. |
JBXL_NET_RECV_ERROR | 失敗. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1283 of file network.cpp.
References JBXL_NET_RECV_ERROR, JBXL_NET_RECV_TIMEOUT, recv_wait(), and udp_recv().
Referenced by udp_recv_Buffer_wait().
int udp_recv_wait_sockaddr_in | ( | int | sock, |
char * | data, | ||
int | size, | ||
struct sockaddr_in * | sv_addr, | ||
int | tm ) |
Definition at line 2605 of file network.cpp.
References JBXL_NET_RECV_TIMEOUT, recv_wait(), and udp_recv_sockaddr_in().
Referenced by udp_recv_Buffer_wait_sockaddr_in().
int udp_send | ( | int | sock, |
char * | smsg, | ||
int | size, | ||
struct addrinfo * | sv_addr ) |
int udp_send(int sock, char* smsg, int size, struct addrinfo* sv_addr)
sendto() をラッピングした関数.UDP経由でデータを送る.
データ(smsg)のサイズ sizeに0以下を指定した場合は,smsgは文字列で あると見なしてサイズを自動的に計算する.
sock | ソケット記述子 |
smsg | 送信するデータ |
size | 送信するデータ(smsg)のサイズ.サイズが 0以下の場合は smsgは文字列であるとみなす. |
sv_addr | サーバの情報を格納する addrinfo 構造体へのポインタ. |
0以上 | 送信したバイト数. |
JBXL_NET_SEND_ERROR | 失敗 |
JBXL_ARGS_ERROR | 不正な引数 |
Definition at line 1199 of file network.cpp.
References JBXL_ARGS_ERROR, and JBXL_NET_SEND_ERROR.
Referenced by udp_hole_punching().
int udp_send_sockaddr_in | ( | int | sock, |
char * | smsg, | ||
int | size, | ||
struct sockaddr_in * | sv_addr ) |
Definition at line 2593 of file network.cpp.
Referenced by udp_hole_punching_sockaddr_in().
|
extern |
Definition at line 22 of file network.cpp.
Referenced by init_network().