5
5
#include < cstring>
6
6
#include < cstdio>
7
7
#include < signal.h>
8
+ #include < unistd.h>
9
+ #include < string.h>
10
+ #include < stdlib.h>
11
+ #include < ev.h>
8
12
9
13
#include " asyn_server.h"
10
14
#include " nb_net_tool.h"
11
15
16
+ struct ev_loop * loop = NULL ;
17
+ int server = 0 ;
18
+
19
+ void accept_cb (EV_P_ ev_io* p, int enent)
20
+ {
21
+ printf (" accept success\n " );
22
+
23
+ ev_io_stop (EV_A_ p);
24
+ ev_break (EV_A_ EVBREAK_ONE);
25
+
26
+ p = (ev_io*)malloc (sizeof (ev_io));
27
+ ev_io_init (p, accept_cb, 0 , EV_READ);
28
+ ev_io_start (loop, p);
29
+ }
30
+
31
+
32
+ void cb (EV_P_ ev_io* p, int enent)
33
+ {
34
+ printf (" stdin read happen\n " );
35
+ // ev_io_stop(EV_A_ p);
36
+ // ev_break(EV_A_ EVBREAK_ONE);
37
+ }
38
+
12
39
int main ()
13
40
{
14
- int server = socket (AF_INET, SOCK_STREAM, 0 );
41
+ // prepare io
42
+ // struct ev_loop* loop = EV_DEFAULT;
43
+ loop = EV_DEFAULT;
44
+ ev_io accept_id;
45
+ ev_io tmp;
46
+
47
+ // int server = socket(AF_INET, SOCK_STREAM, 0);
48
+ server = socket (AF_INET, SOCK_STREAM, 0 );
15
49
16
50
struct sockaddr_in serv_addr;
17
51
bzero (&serv_addr, sizeof (struct sockaddr_in ));
@@ -23,16 +57,28 @@ int main()
23
57
sigset_t old_mask;
24
58
sigfillset (&new_mask);
25
59
pthread_sigmask (SIG_BLOCK, &new_mask, &old_mask);
60
+ printf (" start binding\n " );
26
61
if (0 != bind (server, (struct sockaddr *)&serv_addr, sizeof (serv_addr)))
27
62
{
28
63
printf (" error happen when use bind\n " );
29
64
}
30
65
66
+ printf (" start listening\n " );
31
67
if (0 != listen (server, 10 ))
32
68
{
33
69
printf (" error happen when use listen\n " );
34
70
}
35
71
72
+ printf (" ev io starting\n " );
73
+ ev_io_init (&accept_id, accept_cb, server, EV_READ);
74
+ ev_io_start (loop, &accept_id);
75
+
76
+ // ev_io_init(&tmp, cb, 0, EV_READ);
77
+ // ev_io_start(loop, &tmp);
78
+
79
+ ev_run (loop, 0 );
80
+ printf (" \n ev io end\n " );
81
+
36
82
sigset_t wait_mask;
37
83
sigemptyset (&wait_mask);
38
84
sigaddset (&wait_mask, SIGINT);
@@ -42,5 +88,12 @@ int main()
42
88
int flag = 0 ;
43
89
sigwait (&wait_mask, &flag);
44
90
91
+ printf (" ev io stoping\n " );
92
+ ev_io_stop (EV_A_ &accept_id);
93
+ ev_break (EV_A_ EVBREAK_ALL);
94
+ printf (" ev io has stoped\n " );
95
+
45
96
return 0 ;
46
97
}
98
+
99
+
0 commit comments