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