root/cserver/main.c

Revision 1203, 1.7 kB (checked in by efphe, 1 year ago)

moving code from fenilot.org

Line 
1
2 #include "server.h"
3
4 #include <stdio.h>
5 #include <sys/types.h>
6 #include <sys/socket.h>
7 #include "server_utils.h"
8
9 /*
10  * With the two functions below and the main,
11  * two echo-server will be invoked:
12  *  - tcp:12345
13  *  - udp:12349
14  *
15  * It's just a sample.
16  */
17
18 void tcp_echo(int skt,struct sockaddr *s,socklen_t *salen)
19 {
20     char buf[256];
21     int res;
22
23     memset(buf,0,256);
24     res=recv(skt,buf,256,0);
25     if (res==-1) {
26         debug("Tcp recv error: %s.",strerror(errno));
27         return;
28     }
29     send(skt,buf,res,0);
30     close(skt);
31     return ;
32 }
33
34 void udp_echo(int skt, struct sockaddr *s, socklen_t *salen)
35 {
36     char buf[256];
37     int res;
38     struct sockaddr client;
39     socklen_t   client_len;
40     client_len=sizeof(client);
41
42     res=recvfrom(skt,buf,256,0,&client,&client_len);
43     if (res==-1) {
44         debug("Udp recvfrom error: %s.",strerror(errno));
45         return;
46     }
47     sendto(skt,buf,res,0,&client,client_len);
48     return;
49 }
50
51 void morte(int niente)
52 {
53     debug("Death's coming.");
54     servers_stop();
55     return;
56 }
57
58 void comeva(int nulla)
59 {
60     debug("Speaking is good.");
61     return;
62 }
63
64 int main() {
65     server s[2],*temp;
66
67     temp=s;
68     server_init(temp);
69     server_set_name(temp,"TcpEchoServer");
70     server_set_port(temp,12345);
71     server_set_handler(temp,&tcp_echo);
72     server_set_signal_handler(temp,SIGINT,&morte);
73     server_set_signal_handler(temp,SIGHUP,&comeva);
74
75     temp=s+1;
76     server_init(temp);
77     server_set_name(temp,"UdpEchoServer");
78     server_set_port(temp,12349);
79     server_set_type(temp,SOCK_DGRAM);
80     server_set_handler(temp,&udp_echo);
81     server_set_signal_handler(temp,SIGINT,&morte);
82
83     servers_serve(s,2);
84     return 0;
85 }
Note: See TracBrowser for help on using the browser.