31 struct sockaddr_in sv_addr;
33 sofd = (int)socket(AF_INET, SOCK_DGRAM, 0);
34 if (sofd<0)
return -1;
36 memset(&sv_addr, 0,
sizeof(sv_addr));
37 sv_addr.sin_family = AF_INET;
38 sv_addr.sin_port = htons(port);
39 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
51 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
81 struct sockaddr_in sv_addr;
83 sofd = (int)socket(AF_INET, SOCK_DGRAM, 0);
84 if (sofd<0)
return -1;
86 memset(&sv_addr, 0,
sizeof(sv_addr));
87 sv_addr.sin_family = AF_INET;
88 sv_addr.sin_port = htons(port);
89 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
93 err = setsockopt(sofd, SOL_SOCKET, opt, (
const char*)optval, optlen);
95 err = setsockopt(sofd, SOL_SOCKET, opt, optval, optlen);
103 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
132 struct hostent* shost;
134 sofd = (int)socket(AF_INET, SOCK_DGRAM, 0);
135 if (sofd<0)
return -1;
137 shost = gethostbyname(hostname);
143 memset(sv_addr, 0,
sizeof(*sv_addr));
144 sv_addr->sin_family = AF_INET;
145 sv_addr->sin_port = htons(port);
146 memcpy(&(sv_addr->sin_addr), shost->h_addr, shost->h_length);
166 struct sockaddr_in sv_addr;
168 if (sofd<=0)
return sofd;
170 memset(&sv_addr, 0,
sizeof(sv_addr));
171 sv_addr.sin_family = AF_INET;
172 sv_addr.sin_port = htons(port);
173 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
175 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
203 struct sockaddr_in sv_addr;
205 if (sofd<=0)
return sofd;
207 memset(&sv_addr, 0,
sizeof(sv_addr));
208 sv_addr.sin_family = AF_INET;
209 sv_addr.sin_port = htons(port);
210 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
214 err = setsockopt(sofd, SOL_SOCKET, opt, (
const char*)optval, optlen);
216 err = setsockopt(sofd, SOL_SOCKET, opt, optval, optlen);
224 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
252 struct sockaddr_in sv_addr;
254 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
255 if (sofd<0)
return -1;
257 memset(&sv_addr, 0,
sizeof(sv_addr));
258 sv_addr.sin_family = AF_INET;
259 sv_addr.sin_port = htons(port);
260 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
262 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
268 err = listen(sofd, 10);
301 struct sockaddr_in sv_addr;
303 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
304 if (sofd<0)
return -1;
306 memset(&sv_addr, 0,
sizeof(sv_addr));
307 sv_addr.sin_family = AF_INET;
308 sv_addr.sin_port = htons(port);
309 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
313 err = setsockopt(sofd, SOL_SOCKET, opt, (
const char*)optval, optlen);
315 err = setsockopt(sofd, SOL_SOCKET, opt, optval, optlen);
323 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
329 err = listen(sofd, 10);
356 struct sockaddr_in sv_addr;
358 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
359 if (sofd<0)
return -1;
361 memset(&sv_addr, 0,
sizeof(sv_addr));
362 sv_addr.sin_family = AF_INET;
363 sv_addr.sin_port = htons(port);
364 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
366 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
397 struct sockaddr_in sv_addr;
399 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
400 if (sofd<0)
return -1;
404 err = setsockopt(sofd, SOL_SOCKET, opt, (
const char*)optval, optlen);
406 err = setsockopt(sofd, SOL_SOCKET, opt, optval, optlen);
414 memset(&sv_addr, 0,
sizeof(sv_addr));
415 sv_addr.sin_family = AF_INET;
416 sv_addr.sin_port = htons(port);
417 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
419 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
447 struct hostent *shost;
448 struct sockaddr_in sv_addr;
450 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
451 if (sofd<0)
return -1;
453 shost = gethostbyname(hostname);
459 memset(&sv_addr, 0,
sizeof(sv_addr));
460 sv_addr.sin_family = AF_INET;
461 sv_addr.sin_port = htons(port);
462 memcpy(&sv_addr.sin_addr, shost->h_addr, shost->h_length);
464 err = connect(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
494 struct hostent *shost;
495 struct sockaddr_in sv_addr;
497 sofd = (int)socket(AF_INET, SOCK_STREAM, 0);
498 if (sofd<0)
return -1;
500 memset(&sv_addr, 0,
sizeof(sv_addr));
501 sv_addr.sin_family = AF_INET;
502 sv_addr.sin_port = htons(cport);
503 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
505 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
511 shost = gethostbyname(hostname);
517 memset(&sv_addr, 0,
sizeof(sv_addr));
518 sv_addr.sin_family = AF_INET;
519 sv_addr.sin_port = htons(sport);
520 memcpy(&sv_addr.sin_addr, shost->h_addr, shost->h_length);
522 err = connect(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
546 struct sockaddr_in sv_addr;
548 if (sofd<=0)
return sofd;
550 memset(&sv_addr, 0,
sizeof(sv_addr));
551 sv_addr.sin_family = AF_INET;
552 sv_addr.sin_port = htons(port);
553 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
555 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
583 struct sockaddr_in sv_addr;
585 if (sofd<=0)
return sofd;
589 err = setsockopt(sofd, SOL_SOCKET, opt, (
const char*)optval, optlen);
591 err = setsockopt(sofd, SOL_SOCKET, opt, optval, optlen);
599 memset(&sv_addr, 0,
sizeof(sv_addr));
600 sv_addr.sin_family = AF_INET;
601 sv_addr.sin_port = htons(port);
602 sv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
604 err = bind(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
627int accept_intr(
int sock,
struct sockaddr* cl_addr, socklen_t* cdlen)
632 nsofd = (int)accept(sock, cl_addr, cdlen);
633 }
while (nsofd==-1 && errno==EINTR);
659 struct hostent *shost;
660 struct sockaddr_in sv_addr;
662 shost = gethostbyname(hostname);
663 if (shost==NULL)
return -4;
665 memset(&sv_addr, 0,
sizeof(sv_addr));
666 sv_addr.sin_family = AF_INET;
667 sv_addr.sin_port = htons(port);
668 memcpy(&sv_addr.sin_addr, shost->h_addr, shost->h_length);
670 err = connect(sofd, (
struct sockaddr*)&sv_addr,
sizeof(sv_addr));
671 if (err<0)
return -5;
695 err = shutdown(sofd, 2);
698 err = shutdown(sofd, SHUT_RDWR);
726int udp_recv(
int sock,
char* rmsg,
int size,
struct sockaddr_in* sv_addr)
731 cadlen =
sizeof(*sv_addr);
732 memset(rmsg, 0, size);
733 cc = recvfrom(sock, rmsg, size, 0, (
struct sockaddr*)sv_addr, &cadlen);
755int udp_send(
int sock,
char* smsg,
int size,
struct sockaddr_in* sv_addr)
759 if (size<=0) size = (int)strlen(smsg);
761 cc = sendto(sock, smsg, size, 0, (
struct sockaddr*)sv_addr,
sizeof(*sv_addr));
784 memset(rmsg, 0, size);
785 cc = recv(sock, rmsg, size, 0);
809 if (size<=0) size = (int)strlen(smsg);
810 cc = send(sock, smsg, size, 0);
835int udp_recv_wait(
int sock,
char* rmsg,
int size,
struct sockaddr_in* sv_addr,
int tm)
840 cc =
udp_recv(sock, rmsg, size, sv_addr);
872 cc = recv(sock, mesg, sz, 0);
897 sz = (int)strlen(mesg) + 3;
898 buf = (
char*)malloc(sz);
899 if (
buf==NULL)
return -1;
901 strncpy(
buf, mesg, sz);
902 strncat(
buf,
"\r\n", 2);
904 cc = send(sock,
buf, (
int)strlen(
buf), 0);
947 if (mesg==NULL || sb==NULL)
return -2;
952 if (sb->buf==NULL)
return -3;
955 while (sb->datano==0) {
957 if (cc<=0)
return cc;
963 if (pp==NULL)
return -4;
964 if (strlen((
const char*)pp)>=(
unsigned int)sz) {
965 memcpy(mesg, pp, sz-1);
969 memcpy(mesg, pp, strlen((
const char*)pp));
972 return (
int)strlen(mesg);
994 struct hostent* hent;
997 hent = gethostbyaddr((
const char*)num, 4, AF_INET);
999 hent = gethostbyaddr(num, 4, AF_INET);
1002 if (hent==NULL)
return NULL;
1004 len = (int)strlen(hent->h_name);
1005 hname = (
char*)malloc(
len+1);
1010 memcpy(hname, hent->h_name,
len+1);
1032 if (num==NULL)
return NULL;
1055 unsigned char* ipnum = NULL;
1096 unsigned char* addr = NULL;
1103 ifp = ifq = (
struct ifreq*)malloc(
len);
1104 if (ifq==NULL)
return NULL;
1105 memset(ifp, 0,
len);
1109 sofd = socket(AF_INET, SOCK_DGRAM, 0);
1111 perror(
"get_myipaddr_num: socket");
1117 if (ioctl(sofd, SIOCGIFCONF, &ifc)<0) {
1128 if (ioctl(sofd, SIOCGIFFLAGS, ifp)<0) {
1134 if ((ifp->ifr_flags&IFF_UP) && !(ifp->ifr_flags&IFF_LOOPBACK)) {
1136 unsigned char* p = (
unsigned char*)ifp->ifr_addr.sa_data;
1138 addr = (
unsigned char*)malloc(8);
1147 if (ioctl(sofd, SIOCGIFADDR, ifp)<0) {
1153 for (j=0; j<4; j++) addr[j] = p[j+2];
1156 if (ioctl(sofd, SIOCGIFNETMASK, ifp)<0) {
1162 for (j=0; j<4; j++) addr[j+4] = p[j+2];
1194 if (n==NULL)
return NULL;
1196 addr = (
char*)malloc(32);
1201 memset(addr, 0, 32);
1203 snprintf(addr, 31,
"%d.%d.%d.%d/%d.%d.%d.%d", n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
1227 struct sockaddr_in localif;
1228 struct sockaddr_in remote;
1230 if (dest==NULL)
return NULL;
1232 if (ip ==NULL)
return NULL;
1234 memset(&localif, 0,
sizeof(
struct sockaddr_in));
1235 memset(&remote, 0,
sizeof(
struct sockaddr_in));
1236 remote.sin_family = AF_INET;
1237 remote.sin_addr.s_addr = inet_addr(ip);
1238 remote.sin_port = htons(9999);
1241 sofd = (int)socket(AF_INET, SOCK_DGRAM, 0);
1242 if (sofd<0)
return NULL;
1244 err = connect(sofd, (
struct sockaddr*)&remote,
sizeof(remote));
1250 len =
sizeof(localif);
1251 err = getsockname(sofd, (
struct sockaddr *)&localif, &
len);
1283 pp = (
unsigned char*)&(sin_addr);
1284 if (pp[0]==0)
return NULL;
1286 ip = (
char*)malloc(16);
1287 if (ip==NULL)
return NULL;
1290 snprintf(ip, 15,
"%d.%d.%d.%d", pp[0], pp[1], pp[2], pp[3]);
1315 ip = (
unsigned char*)malloc(4);
1316 if (ip==NULL)
return NULL;
1318 pp = (
unsigned char*)&(sin_addr);
1335 struct hostent *host;
1339 host = gethostbyname(hostname);
1340 if (host==NULL)
return NULL;
1342 ip = (
char*)malloc(16);
1343 if (ip==NULL)
return NULL;
1346 pp = (
unsigned char*)(host->h_addr);
1347 snprintf(ip, 15,
"%d.%d.%d.%d", pp[0], pp[1], pp[2], pp[3]);
1363 struct hostent *host;
1367 host = gethostbyname(hostname);
1368 if (host==NULL)
return NULL;
1369 ip = (
unsigned char*)malloc(4);
1370 if (ip==NULL)
return NULL;
1372 pp = (
unsigned char*)(host->h_addr);
1392 if (pp==NULL)
return NULL;
1394 net = (
char*)malloc(16);
1401 snprintf(net, 15,
"%d.%d.%d.%d", pp[0], pp[1], pp[2], pp[3]);
1423 if (ip==NULL)
return NULL;
1426 net = (
unsigned char*)malloc(4);
1432 for (i=0; i<4; i++) net[i] = ip[i] & mk[i];
1444 struct sockaddr_in ss_addr;
1445 struct hostent *shost;
1448 shost = gethostbyname(hostname);
1450 ss_addr.sin_family = 0;
1451 ss_addr.sin_port = 0;
1455 memset(&ss_addr, 0,
sizeof(ss_addr));
1456 ss_addr.sin_family = AF_INET;
1457 ss_addr.sin_port = htons(cport);
1458 memcpy(&(ss_addr.sin_addr), shost->h_addr, shost->h_length);
1466 struct sockaddr_in ss_addr;
1468 memset(&ss_addr, 0,
sizeof(ss_addr));
1469 ss_addr.sin_family = AF_INET;
1470 ss_addr.sin_port = htons(cport);
1471 memcpy(&(ss_addr.sin_addr), ipnum, 4);
1479 struct sockaddr_in ss_addr;
1480 struct hostent *shost;
1484 shost = gethostbyname(
"127.0.0.1");
1486 memset(&ss_addr, 0,
sizeof(ss_addr));
1487 ss_addr.sin_family = AF_INET;
1488 ss_addr.sin_port = htons(cport);
1489 memcpy(&(ss_addr.sin_addr), shost->h_addr, shost->h_length);
1509 unsigned char *p1, *p2;
1511 p1 = (
unsigned char*)&(addr1.sin_addr);
1512 p2 = (
unsigned char*)&(addr2.sin_addr);
1513 len =
sizeof(addr1.sin_addr);
1515 for (i=0; i<
len; i++) {
1516 if (p1[i]!=p2[i])
return FALSE;
1519 p1 = (
unsigned char*)&(addr1.sin_port);
1520 p2 = (
unsigned char*)&(addr2.sin_port);
1521 len =
sizeof(addr1.sin_port);
1523 for (i=0; i<
len; i++) {
1524 if (p1[i]!=p2[i])
return FALSE;
1547 if (addr1==NULL || addr2==NULL)
return FALSE;
1550 for (i=0; i<4; i++) {
1551 if (addr1[i] != addr2[i])
return FALSE;
1555 for (i=0; i<4; i++) {
1556 if ((addr1[i]&mask[i]) != (addr2[i]&mask[i]))
return FALSE;
1583 if (addr1==NULL || addr2==NULL || mask==NULL)
return FALSE;
1588 if (a1==NULL || a2==NULL || mk==NULL) {
1628 if (addr==NULL)
return NULL;
1630 num = (
unsigned char*)malloc(8);
1631 if (num==NULL)
return NULL;
1636 ps =
awk(addr,
'/', 1);
1642 i = (int)strlen(ps) - 1;
1643 while (i>0 && ps[i]==
'.') i--;
1645 if (isalpha(ps[i])) {
1661 for (i=0; i<4; i++) {
1662 pc =
awk(ps,
'.', i+1);
1663 if (pc==NULL)
break;
1664 num[i] = (
unsigned char)atoi(pc);
1669 for (i=0; i<4; i++) num[i] = uc[i];
1674 ps =
awk(addr,
'/', 2);
1679 for (i=3; i>=0; i--) {
1680 if (num[i]!=0 || f==
ON) {
1692 for (i=0; i<4; i++) {
1693 pc =
awk(ps,
'.', i+1);
1694 if (pc==NULL)
break;
1695 num[i+4] = (
unsigned char)atoi(pc);
1701 if (num[4]<=32 && num[5]==0 && num[6]==0 && num[7]==0) {
1702 int nn, cl = (int)num[4];
1703 for (i=0; i<4; i++) {
1704 nn = 8 -
Max(0,
Min(8, cl-8*i));
1705 num[i+4] = 0xff<<nn;
1730 if (n==NULL)
return NULL;
1732 addr = (
char*)malloc(32);
1733 if (addr==NULL)
return NULL;
1734 memset(addr, 0, 32);
1736 snprintf(addr, 31,
"%d.%d.%d.%d/%d.%d.%d.%d", n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
1763 if (addr==NULL)
return NULL;
1765 num = (
unsigned char*)malloc(4);
1766 if (num==NULL)
return NULL;
1770 i = (int)strlen(addr) - 1;
1771 while (i>0 && addr[i]==
'.') i--;
1773 if (isalpha(addr[i])) {
1787 for (i=0; i<4; i++) {
1788 pc =
awk(addr,
'.', i+1);
1789 if (pc==NULL)
break;
1790 num[i] = (
unsigned char)atoi(pc);
1795 for (i=0; i<4; i++) num[i] = uc[i];
1819 if (n==NULL)
return NULL;
1821 addr = (
char*)malloc(16);
1822 if (addr==NULL)
return NULL;
1823 memset(addr, 0, 16);
1825 snprintf(addr, 15,
"%d.%d.%d.%d", n[0], n[1], n[2], n[3]);
1846 struct timeval timeout;
1851 timeout.tv_sec = tm;
1852 timeout.tv_usec = 0;
1854 FD_SET(sock, &mask);
1857 nd = select(sock+1, &mask, NULL, NULL, &timeout);
1859 }
while ((nd<0 || !FD_ISSET(sock, &mask)) && (
int)(ntm-otm)<=tm);
1861 return FD_ISSET(sock, &mask);
1870 struct timeval timeout;
1873 nm =
Max(sock1, sock2);
1876 timeout.tv_sec = tm;
1877 timeout.tv_usec = 0;
1879 FD_SET(sock1, &mask);
1880 FD_SET(sock2, &mask);
1881 nd = select(nm+1, &mask, NULL, NULL, &timeout);
1883 }
while ((nd<0 || (!FD_ISSET(sock1, &mask) && !FD_ISSET(sock2, &mask))) && (
int)(ntm-otm)<=tm);
1885 if (FD_ISSET(sock1, &mask)) ret += 1;
1886 if (FD_ISSET(sock2, &mask)) ret += 2;
1907 struct timeval timeout;
1912 timeout.tv_sec = tm;
1913 timeout.tv_usec = 0;
1915 FD_SET(sock, &mask);
1918 nd = select(sock+1, NULL, &mask, NULL, &timeout);
1920 }
while ((nd<0 || !FD_ISSET(sock, &mask)) && (
int)(ntm-otm)<=tm);
1922 return FD_ISSET(sock, &mask);
1942 memset(data, 0, nm);
1958 range = max - min + 1;
1959 *port = rand()%range + min;
1963 while(sock<=0 && i<range) {
1965 if (*port>max) *port = ((int)*port)%max + min - 1;
1970 if (sock<=0) *port = 0;
1980 range = max - min + 1;
1981 *port = rand()%range + min;
1985 while(sock<=0 && i<range) {
1987 if (*port>max) *port = ((int)*port)%max + min - 1;
1992 if (sock<=0) *port = 0;
2002 range = max - min + 1;
2003 *cport = rand()%range + min;
2007 while(sock<0 && i<range) {
2009 if (*cport>max) *cport = ((int)*cport)%max + min - 1;
2014 if (sock<=0) *cport = 0;
2036 ret = WSAStartup(MAKEWORD(2,0), &WsaData);
2037 if (ret!=0) WSACleanup();
int tcp_recv_wait(int sock, char *mesg, int sz, int tm)
int tcp_send(int sock, char *smsg, int size)
char * get_myipaddr()
自分の [IPアドレス]/[ネットマスク](文字列)
unsigned char * get_mynetaddr_num()
自分の IPv4ネットワークアドレス(数字)
int send_wait(int sock, int tm)
struct sockaddr_in get_local_sockaddr(unsigned short cport)
unsigned char * to_address_num4(char *addr, int mode)
IPアドレス(文字列)→ [IPアドレス](数字4byte)
void udp_hole_punching(int sock, struct sockaddr_in addr, int nm)
char * to_address_char4(unsigned char *n)
[IPアドレス](数字4byte)→ IPアドレス(文字列)
int tcp_server_socket_setopt(int port, int opt, const void *optval, int optlen)
call socket(), setsockopt(), bind(), listen()
int tcp_recv_mstream(int sock, char *mesg, int sz, mstream *sb, int tm)
int get_valid_tcp_client_socket(int min, int max, char *hname, unsigned short sport, unsigned short *cport)
int socket_close(int sofd)
call shutdown(), close()
unsigned char * to_address_num8(char *addr, int mode)
IPアドレス(文字列)→ [IPアドレス],[ネットマスク](数字8byte)
int tcp_send_mesgln(int sock, char *mesg)
char * get_hostname_bynum(unsigned char *num)
IPv4アドレス(数字) → ホスト名(文字列)
int is_same_network_num(unsigned char *addr1, unsigned char *addr2, unsigned char *mask)
int get_valid_tcp_server_socket(int min, int max, unsigned short *port)
int udp_recv(int sock, char *rmsg, int size, struct sockaddr_in *sv_addr)
struct sockaddr_in get_sockaddr(char *hostname, unsigned short cport)
int accept_intr(int sock, struct sockaddr *cl_addr, socklen_t *cdlen)
call accept()
int tcp_recv(int sock, char *rmsg, int size)
unsigned char * get_ipaddr_byname_num(char *hostname)
ホスト名 → IPv4アドレス(数字4byte)
unsigned char * get_ipaddr_num(struct in_addr sin_addr)
構造体 → IPv4アドレス(数字4byte)
struct sockaddr_in get_sockaddr_bynum(char *ipnum, unsigned short cport)
int recv_wait(int sock, int tm)
char * to_address_char8(unsigned char *n)
[IPアドレス],[ネットマスク](数字8byte)→ IPアドレス(文字列)
int get_valid_udp_socket(int min, int max, unsigned short *port)
int is_same_network(char *addr1, char *addr2, char *mask)
int is_same_sockaddr(struct sockaddr_in addr1, struct sockaddr_in addr2)
char * get_ipaddr_byname(char *hostname)
ホスト名 → IPv4アドレス(文字列)
int recv_wait_twin(int sock1, int sock2, int tm)
unsigned char * get_myipaddr_num()
自分の [IPアドレス],[ネットマスク](数字)
char * get_mynetaddr()
自分の IPv4ネットワークアドレス(文字列)
int udp_send(int sock, char *smsg, int size, struct sockaddr_in *sv_addr)
int udp_recv_wait(int sock, char *rmsg, int size, struct sockaddr_in *sv_addr, int tm)
void cleanup_network(void)
char * get_ipaddr(struct in_addr sin_addr)
構造体 → IPv4アドレス(文字列)
#define MAXIFNO
取り扱うネットワークインターフェイスの最大数
ネットワーク用ライブラリヘッダ for IPv4/IPv6
#define udp_bind_setopt(s, p, o, v, l)
#define get_localip_bydest(h)
#define tcp_client_bind_socket(h, s, c)
#define tcp_server_bind(p)
#define udp_client_socket(h, p, a)
#define tcp_server_bind_setopt(p, o, v, l)
#define udp_server_socket(p, a)
#define udp_server_socket_setopt(p, o, v, l, a)
#define tcp_client_socket(h, p)
#define tcp_bind_setopt(s, p, o, v, l)
#define tcp_server_socket(p)
#define tcp_connect(s, h, p)