summaryrefslogtreecommitdiff
path: root/examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp')
-rw-r--r--examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp b/examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp
new file mode 100644
index 00000000000..4d988ba9253
--- /dev/null
+++ b/examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp
@@ -0,0 +1,60 @@
+#include "ace/LSOCK_Acceptor.h"
+// @(#)FD-unserver.cpp 1.1 10/18/96
+
+#include "ace/LSOCK_Stream.h"
+#include "ace/UNIX_Addr.h"
+
+#if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS)
+
+/* ACE_SOCK Server */
+
+int
+main (int argc, char *argv[])
+{
+ char *rendezvous = argc > 1 ? argv[1] : ACE_DEFAULT_RENDEZVOUS;
+ /* Create a server */
+ ACE_OS::unlink (rendezvous);
+ ACE_UNIX_Addr addr (rendezvous);
+ ACE_LSOCK_Acceptor peer_acceptor (addr);
+ ACE_LSOCK_Stream new_stream;
+
+ /* Performs the iterative server activities */
+
+ for (;;)
+ {
+ char buf[BUFSIZ];
+ int fd;
+
+ /* Create a new ACE_SOCK_Stream endpoint */
+ if (peer_acceptor.accept (new_stream) == -1)
+ ACE_OS::perror ("accept");
+
+ /* Read data from client (correctly handles incomplete reads due to flow control) */
+
+ if (new_stream.recv_handle (fd) == -1)
+ ::perror ("recv_handle"), ACE_OS::exit (1);
+
+ ACE_OS::puts ("----------------------------------------");
+
+ for (int n; (n = ACE_OS::read (fd, buf, sizeof buf)) > 0; )
+ ::write (1, buf, n);
+
+ ACE_OS::puts ("----------------------------------------");
+
+ if (new_stream.send ("yow", 3) == -1)
+ ::perror ("send"), ACE_OS::exit (1);
+
+ /* Close new endpoint (listening endpoint stays open) */
+ if (new_stream.close () == -1)
+ ACE_OS::perror ("close");
+ }
+ /* NOTREACHED */
+ return 0;
+}
+#else
+int
+main (void)
+{
+ ACE_ERROR_RETURN ((LM_ERROR, "your platform doesn't not support UNIX domain sockets\n"), -1);
+}
+#endif /* ACE_LACKS_UNIX_DOMAIN_SOCKETS */