8 #include <netinet/tcp.h> 10 #include <netinet/in.h> 11 #include <sys/socket.h> 16 #ifndef NETWORK_IO_CHANNEL 17 #define NETWORK_IO_CHANNEL 26 FILE * stream =
nullptr;
27 char * buffer =
nullptr;
28 bool has_sent =
false;
33 is_server = (address ==
nullptr);
34 if (address ==
nullptr) {
35 struct sockaddr_in dest;
36 struct sockaddr_in serv;
37 socklen_t socksize =
sizeof(
struct sockaddr_in);
38 memset(&serv, 0,
sizeof(serv));
39 serv.sin_family = AF_INET;
40 serv.sin_addr.s_addr = htonl(INADDR_ANY);
41 serv.sin_port = htons(port);
42 mysocket = socket(AF_INET, SOCK_STREAM, 0);
44 setsockopt(mysocket, SOL_SOCKET, SO_REUSEADDR, (
const char*)&reuse,
sizeof(reuse));
45 bind(mysocket, (
struct sockaddr *)&serv,
sizeof(
struct sockaddr));
47 consocket = accept(mysocket, (
struct sockaddr *)&dest, &socksize);
50 struct sockaddr_in dest;
51 consocket = socket(AF_INET, SOCK_STREAM, 0);
52 memset(&dest, 0,
sizeof(dest));
53 dest.sin_family = AF_INET;
54 dest.sin_addr.s_addr = inet_addr(address);
55 dest.sin_port = htons(port);
56 while(connect(consocket, (
struct sockaddr *)&dest,
sizeof(
struct sockaddr)) == -1) {
61 cout <<
"connected"<<endl;
62 stream = fdopen(consocket,
"wb+");
86 setsockopt(consocket,IPPROTO_TCP,TCP_NODELAY,&one,
sizeof(one));
91 setsockopt(consocket,IPPROTO_TCP,TCP_NODELAY,&zero,
sizeof(zero));
104 int res = fwrite(sent+(
char*)data, 1, len-sent, stream);
108 fprintf(stderr,
"error: net_send_data %d\n", res);
122 int res = fread(sent+(
char*)data, 1, len-sent, stream);
126 fprintf(stderr,
"error: net_send_data %d\n", res);
131 #endif//NETWORK_IO_CHANNEL #define NETWORK_BUFFER_SIZE
Definition: config.h:7
void flush()
Definition: net_io_channel.h:94
Definition: net_io_channel.h:22
NetIO(const char *address, int port)
Definition: net_io_channel.h:32
void send_data_impl(const void *data, int len)
Definition: net_io_channel.h:98
bool is_server
Definition: net_io_channel.h:23
void recv_data_impl(void *data, int len)
Definition: net_io_channel.h:113
void set_delay()
Definition: net_io_channel.h:89
void sync()
Definition: net_io_channel.h:73
Definition: io_channel.h:12
void set_nodelay()
Definition: net_io_channel.h:84
~NetIO()
Definition: net_io_channel.h:68