JunkBox_Lib 1.10.1
Loading...
Searching...
No Matches
network4.h
Go to the documentation of this file.
1#ifndef __JBXL_NETWORK_H_
2#define __JBXL_NETWORK_H_
3
14#include "tools.h"
15
16#define _WINSOCK_DEPRECATED_NO_WARNINGS
17#ifdef WIN32
18 //#include <winsock2.h> see tools.h
19 #include <fcntl.h>
20
21 #ifndef socklen_t
22 #define socklen_t int
23 #endif
24 extern WSADATA WsaData;
25
26 #define _WINSOCK_DEPRECATED_NO_WARNINGS
27
28#else
29 // Unix/Linux
30 #include <sys/socket.h>
31
32 #ifdef HAVE_UNISTD_H
33 #ifndef _XOPEN_SOURCE
34 #define _XOPEN_SOURCE
35 #endif
36 #include <unistd.h>
37 #endif
38
39 #ifdef HAVE_SYS_SOCKIO_H
40 #include <sys/sockio.h>
41 #endif
42
43 #ifdef HAVE_NETINET_IN_H
44 #include <netinet/in.h>
45 #endif
46 #ifdef HAVE_ARPA_INET_H
47 #include <arpa/inet.h>
48 #endif
49
50 #include <netdb.h>
51
52 #include <fcntl.h>
53 #include <sys/ioctl.h>
54 #include <net/if.h>
55#endif
56
57
58#define SEND_TIMEOUTED -97
59#define RECV_TIMEOUTED -98
60#define TRANS_TIMEOUTED -99
61
62
63//#define LIPADDR 32 // IPアドレスの長さ
64#define MAXIFNO 10
65
66
68//
69int init_network(void);
70void cleanup_network(void);
71
72
74// Berkeley Socket
75
76int udp_server_socket(int);
77int udp_server_socket_setopt(int, int, const void*, int);
78int udp_client_socket(char*, int, struct sockaddr_in*);
79int udp_bind(int, int);
80int udp_bind_setopt(int, int, int, const void*, int);
81
82int tcp_server_socket(int port);
83int tcp_server_socket_setopt(int port, int, const void*, int);
84int tcp_server_bind(int port);
85int tcp_server_bind_setopt(int port, int, const void*, int);
86
87int tcp_client_socket(char* hname, int port);
88int tcp_client_bind_socket(char* host, int sport, int cport);
89int tcp_bind(int, int);
90int tcp_bind_setopt(int, int, int, const void*, int);
91int tcp_connect(int sock, char* host, int port);
92
93int accept_intr(int, struct sockaddr*, socklen_t*);
94int socket_close(int sock);
95
96int get_valid_udp_socket(int min, int max, unsigned short* port);
97int get_valid_tcp_server_socket(int min, int max, unsigned short* port);
98int get_valid_tcp_client_socket(int min, int max, char* hostname, unsigned short sport, unsigned short* cport);
99
100
102// Communication
103
104int udp_recv(int, char*, int, struct sockaddr_in*);
105int udp_send(int, char*, int, struct sockaddr_in*);
106int tcp_recv(int, char*, int);
107int tcp_send(int, char*, int);
108
109int tcp_recv_wait(int sock, char* data, int sz, int tm);
110int udp_recv_wait(int sock, char* data, int size, struct sockaddr_in* sv_addr, int tm);
111
112int tcp_send_mesgln(int, char*);
113
114int tcp_recv_mstream(int sock, char* mesg, int sz, mstream* sb, int tm);
115
116int recv_wait(int sock, int tm);
117int recv_wait_twin(int sock1, int sock2, int tm);
118int send_wait(int sock, int tm);
119
120void udp_hole_punching(int sock, struct sockaddr_in addr, int nm);
121
122
133#define udp_send_mesg(sock, smsg, sv_addr) udp_send((sock), (smsg), 0, (sv_addr))
134
135
145#define tcp_send_mesg(sock, smsg) tcp_send((sock), (smsg), 0)
146
147
149// IP address
150
151char* get_ipaddr(struct in_addr);
152char* get_ipaddr_byname(char*);
153char* get_mynetaddr(void);
154char* get_localip_bydest(char* dest);
155
156char* get_hostname_bynum(unsigned char*);
157char* get_hostname(char*);
158
159unsigned char* get_ipaddr_num(struct in_addr);
160unsigned char* get_ipaddr_byname_num(char*);
161unsigned char* get_mynetaddr_num(void);
162
163
171#define get_localip() get_localip_bydest("202.26.158.1")
172
173
174#ifdef WIN32
175 #define get_myipaddr() get_localip_bydest("202.26.158.1")
176#else
177 char* get_myipaddr(void);
178#endif
179unsigned char* get_myipaddr_num(void);
180
181struct sockaddr_in get_sockaddr(char* hostname, unsigned short cport);
182struct sockaddr_in get_sockaddr_bynum(char* ipnum, unsigned short cport);
183struct sockaddr_in get_local_sockaddr(unsigned short cport);
184int is_same_sockaddr(struct sockaddr_in addr1, struct sockaddr_in addr2);
185
186unsigned char* to_address_num8(char* addr, int mode);
187char* to_address_char8(unsigned char* addr);
188unsigned char* to_address_num4(char* addr, int mode);
189char* to_address_char4(unsigned char* addr);
190
191int is_same_network_num(unsigned char* addr1, unsigned char* addr2, unsigned char* mask);
192int is_same_network(char* addr1, char* addr2, char* mask);
193
194
195#endif
196
197
198
int udp_send(int, char *, int, struct sockaddr_in *)
Definition network4.c:755
unsigned char * get_myipaddr_num(void)
自分の [IPアドレス],[ネットマスク](数字)
Definition network4.c:1092
int get_valid_tcp_client_socket(int min, int max, char *hostname, unsigned short sport, unsigned short *cport)
Definition network.c:1124
int tcp_send(int, char *, int)
Definition network.c:1252
char * get_myipaddr(void)
自分の [IPアドレス]/[ネットマスク](文字列)
Definition network4.c:1188
int send_wait(int sock, int tm)
Definition network.c:1518
int init_network(void)
Definition network.c:26
char * to_address_char8(unsigned char *addr)
[IPアドレス],[ネットマスク](数字8byte)→ IPアドレス(文字列)
Definition network4.c:1727
struct sockaddr_in get_local_sockaddr(unsigned short cport)
Definition network4.c:1477
unsigned char * to_address_num4(char *addr, int mode)
IPアドレス(文字列)→ [IPアドレス](数字4byte)
Definition network4.c:1756
void udp_hole_punching(int sock, struct sockaddr_in addr, int nm)
Definition network4.c:1935
int udp_recv(int, char *, int, struct sockaddr_in *)
Definition network4.c:726
int udp_recv_wait(int sock, char *data, int size, struct sockaddr_in *sv_addr, int tm)
Definition network4.c:835
int tcp_recv_mstream(int sock, char *mesg, int sz, mstream *sb, int tm)
Definition network.c:1395
char * get_ipaddr_byname(char *)
ホスト名 → IPv4アドレス(文字列) 
Definition network4.c:1333
unsigned char * get_ipaddr_byname_num(char *)
ホスト名 → IPv4アドレス(数字4byte)
Definition network4.c:1361
int tcp_send_mesgln(int, char *)
Definition network.c:1345
int socket_close(int sock)
call shutdown(), close()
Definition network.c:1022
unsigned char * to_address_num8(char *addr, int mode)
IPアドレス(文字列)→ [IPアドレス],[ネットマスク](数字8byte)
Definition network4.c:1620
int accept_intr(int, struct sockaddr *, socklen_t *)
call accept()
Definition network.c:995
int is_same_network_num(unsigned char *addr1, unsigned char *addr2, unsigned char *mask)
Definition network4.c:1543
int get_valid_tcp_server_socket(int min, int max, unsigned short *port)
Definition network.c:1102
char * get_hostname_bynum(unsigned char *)
IPv4アドレス(数字) → ホスト名(文字列)
Definition network4.c:990
struct sockaddr_in get_sockaddr(char *hostname, unsigned short cport)
Definition network4.c:1442
char * to_address_char4(unsigned char *addr)
[IPアドレス](数字4byte)→ IPアドレス(文字列)
Definition network4.c:1816
unsigned char * get_mynetaddr_num(void)
自分の IPv4ネットワークアドレス(数字)
Definition network4.c:1415
int tcp_recv_wait(int sock, char *data, int sz, int tm)
Definition network.c:1317
unsigned char * get_ipaddr_num(struct in_addr)
構造体  → IPv4アドレス(数字4byte)
Definition network4.c:1310
struct sockaddr_in get_sockaddr_bynum(char *ipnum, unsigned short cport)
Definition network4.c:1464
int recv_wait(int sock, int tm)
Definition network.c:1443
int get_valid_udp_socket(int min, int max, unsigned short *port)
Definition network.c:1078
char * get_mynetaddr(void)
自分の IPv4ネットワークアドレス(文字列)
Definition network4.c:1386
int is_same_network(char *addr1, char *addr2, char *mask)
Definition network.c:2283
int is_same_sockaddr(struct sockaddr_in addr1, struct sockaddr_in addr2)
Definition network4.c:1506
int recv_wait_twin(int sock1, int sock2, int tm)
Definition network.c:1480
int tcp_recv(int, char *, int)
Definition network.c:1226
int tcp_server_socket_setopt(int port, int, const void *, int)
call socket(), setsockopt(), bind(), listen()
Definition network4.c:298
char * get_ipaddr(struct in_addr)
構造体  → IPv4アドレス(文字列)
Definition network4.c:1278
void cleanup_network(void)
Definition network.c:40
#define udp_bind_setopt(s, p, o, v, l)
Definition network.h:98
#define get_localip_bydest(h)
Definition network.h:226
#define tcp_client_bind_socket(h, s, c)
Definition network.h:134
#define tcp_server_bind(p)
Definition network.h:116
#define tcp_bind(s, p)
Definition network.h:138
#define udp_client_socket(h, p, a)
Definition network.h:90
#define tcp_server_bind_setopt(p, o, v, l)
Definition network.h:120
#define udp_server_socket(p, a)
Definition network.h:82
#define udp_server_socket_setopt(p, o, v, l, a)
Definition network.h:86
#define udp_bind(s, p)
Definition network.h:94
#define tcp_client_socket(h, p)
Definition network.h:130
#define tcp_bind_setopt(s, p, o, v, l)
Definition network.h:142
#define tcp_server_socket(p)
Definition network.h:108
#define get_hostname(h)
Definition network.h:198
#define tcp_connect(s, h, p)
Definition network.h:146
汎用ツールヘッダ
#define mstream
バイト型 メッセージストリーム
Definition tools.h:167