-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTest.cpp
More file actions
128 lines (107 loc) · 1.73 KB
/
Copy pathTest.cpp
File metadata and controls
128 lines (107 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include "Network.h"
using namespace net;
#define BUFFLEN 1024
NetLoop loop;
class MySocket : public IoSocket
{
public:
MySocket()
{
}
~MySocket()
{
printf("~MySocket()\n");
}
protected:
virtual void onConnect(int err) {
if (!err)
{
printf("onConnect ok\n");
static char buff[100] = "hello world!";
//write(buff, strlen(buff) + 1);
posRead();
}
else
{
printf("onConnect fail:%d\n", err);
reconnect();
}
}
virtual void onRead(int bytes, int err) {
printf("onRead ==> bytes:%d err:%d\n", bytes, err);
if (bytes <= 0 || err) {
printf("socket close\n");
return;
}
printf("%s\n", _rbuff);
posRead();
//strcpy(_wbuff, _rbuff);
//write(_wbuff, bytes);
}
virtual void onWrite(int bytes, int err) {
printf("onWrite: bytes:%d, err:%d\n", bytes, err);
}
public:
void posRead()
{
read(_rbuff, BUFFLEN);
}
private:
char _rbuff[BUFFLEN];
char _wbuff[BUFFLEN];
};
class MyAccept : public Accept
{
public:
virtual void onAccept(IoSockptr& sioptr, int err) {
printf("onAccept: errno:%d\n", err);
if (err)
{
accept(sioptr);
}
else {
((MySocket *)sioptr.get())->posRead();
accept(std::make_shared<MySocket>());
}
}
};
void client()
{
loop.init();
{
IoSockptr ptr = std::make_shared<MySocket>();
ptr->connect(&loop, "192.168.198.128", 6601);
}
while (1)
{
loop.run(5);
}
}
void server()
{
loop.init();
MyAccept accept;
accept.listen(&loop, "192.168.1.3", 6601);
accept.accept(std::make_shared<MySocket>());
while (1)
{
loop.run(5);
}
}
int main(int arg, char* argv[])
{
#ifdef _WIN32
WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);
#endif
if (1)
{
server();
}
else
{
client();
}
}