1import ("socket");
2
3private define perform_echo (s1)
4{
5   variable buf;
6   if (-1 == read (s1, &buf, 1024))
7     () = fprintf (stderr, "server: read failed: %s", errno_string (errno));
8   else
9     () = fprintf (stdout, "server read %d bytes: %s\n", bstrlen (buf), buf);
10
11   if (-1 == write (s1, buf))
12     () = fprintf (stderr, "server: write failed: %s", errno_string(errno));
13}
14
15private define unix_server ()
16{
17   variable s = socket (PF_UNIX, SOCK_STREAM, 0);
18   bind (s, "/tmp/foo.sock");
19   listen (s, 1);
20   variable s1 = accept (s);
21   perform_echo (s1);
22}
23
24private define inet_server ()
25{
26   variable s = socket (PF_INET, SOCK_STREAM, 0);
27   bind (s, "aluche", 31000);
28   listen (s, 1);
29   variable host, port;
30   variable s1 = accept (s, &host, &port);
31   vmessage ("accepted connection from %s:%d", host, port);
32   perform_echo (s1);
33}
34
35define slsh_main ()
36{
37   %unix_server ();
38   inet_server ();
39}
40