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
|
import ("socket");
private define perform_echo (s1)
{
variable buf;
if (-1 == read (s1, &buf, 1024))
() = fprintf (stderr, "server: read failed: %s", errno_string (errno));
else
() = fprintf (stdout, "server read %d bytes: %s\n", bstrlen (buf), buf);
if (-1 == write (s1, buf))
() = fprintf (stderr, "server: write failed: %s", errno_string(errno));
}
private define unix_server ()
{
variable s = socket (PF_UNIX, SOCK_STREAM, 0);
bind (s, "/tmp/foo.sock");
listen (s, 1);
variable s1 = accept (s);
perform_echo (s1);
}
private define inet_server ()
{
variable s = socket (PF_INET, SOCK_STREAM, 0);
bind (s, "aluche", 31000);
listen (s, 1);
variable host, port;
variable s1 = accept (s, &host, &port);
vmessage ("accepted connection from %s:%d", host, port);
perform_echo (s1);
}
define slsh_main ()
{
%unix_server ();
inet_server ();
}
|