unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
From: Ian Sheldon <is+guile@kaidea.freeserve.co.uk>
Cc: bug-guile@gnu.org
Subject: Re: [PATCH] posix.texi: added additional examples
Date: Mon, 18 Mar 2002 23:16:02 +0000	[thread overview]
Message-ID: <3C967532.6090806@kaidea.freeserve.co.uk> (raw)
In-Reply-To: m37ko9k3v4.fsf@laruns.ossau.uklinux.net

No problems.  Here's the patch without the extra @node updates.

I haven't signed any papers with the FSF so if the patch is considered 
too big to incorporate without signing copyright papers then I'd be 
happy to.

* posix.texi: Added more examples of usage and a sample TCP/IP
client/server.

--- doc/ref/posix.texi.orig	Sun Mar 10 20:49:59 2002
+++ doc/ref/posix.texi	Mon Mar 18 22:41:52 2002
@@ -701,6 +701,16 @@
  @deffn primitive closedir port
  Close the directory stream @var{stream}.
  The return value is unspecified.
+
+To display all the entries in a directory:
+@example
+(define dir (opendir "/usr/lib"))
+(do ((entry (readdir dir) (readdir dir)))
+    ((eof-object? entry))
+  (display entry)(newline))
+(closedir dir)
+@end example
+
  @end deffn

  @deffn primitive sync
@@ -753,6 +763,11 @@
  base name is the file name without any directory components.
  If @var{suffix} is provided, and is equal to the end of
  @var{basename}, it is removed also.
+
+@lisp
+(basename "/tmp/test.xml" ".xml")
+@result{}"test"
+@end lisp
  @end deffn


@@ -970,6 +985,11 @@
  month and day names is dependent on the current locale.  The value 
returned
  is the formatted string.
  @xref{Formatting Date and Time, , , libc, The GNU C Library Reference 
Manual}.)
+
+@lisp
+(strftime "%c" (localtime (current-time)))
+@result{}"Mon Mar 11 20:17:43 2002"
+@end lisp
  @end deffn

  @deffn primitive strptime format string
@@ -1549,6 +1569,13 @@

  @deffn procedure open-input-pipe command
  Equivalent to @code{open-pipe} with mode @code{OPEN_READ}.
+
+@lisp
+(read-line (open-input-pipe "date"))
+@result{}"Mon Mar 11 20:10:44 GMT 2002"
+(waitpid WAIT_ANY)
+@result{}(24160 . 0)
+@end lisp
  @end deffn

  @deffn procedure open-output-pipe command
@@ -1572,6 +1599,7 @@
  * Network Address Conversion::
  * Network Databases::
  * Network Sockets and Communication::
+* Internet Socket Examples::
  @end menu

  @node Network Address Conversion
@@ -1705,6 +1733,13 @@
  @code{no-data}, corresponding to the equivalent @code{h_error} values.
  Unusual conditions may result in errors thrown to the
  @code{system-error} or @code{misc_error} keys.
+
+@lisp
+(gethost "www.gnu.org")
+@result{}#("www.gnu.org" () 2 4 (3353880842))
+(gethostbyname "www.emacs.org")
+@result{}#("emacs.org" ("www.emacs.org") 2 4 (1073448978))
+@end lisp
  @end deffn

  The following procedures may be used to step through the host
@@ -1874,6 +1909,14 @@
  @code{getservent} (see below).
  @end deffn

+@lisp
+(getserv "imap" "tcp")
+@result{}#("imap2" ("imap") 143 "tcp")
+(getservbyport 88 "udp")
+@result{}#("kerberos" ("kerberos5" "krb5") 88 "udp")
+@end lisp
+
+
  The following procedures may be used to step through the service
  database from beginning to end.

@@ -2241,6 +2284,68 @@
        (uniform-vector-read! v port)
        (ntohl (uniform-vector-ref v 0)))))
  @end example
+
+@node Internet Socket Examples
+@subsection Network Socket Examples
+The following sections give examples of how to use network sockets.
+
+@menu
+* Internet Socket Client::
+* Internet Socket Server::
+@end menu
+
+@node Internet Socket Client
+@subsubsection Internet Socket Client Example
+@cindex socket client example
+
+The following example demonstrates an Internet socket client.
+It connects to the HTTP daemon running on the local machine and
+returns the contents of the root index URL.
+
+@example
+(let ((s (socket AF_INET SOCK_STREAM 0)))
+  (connect s AF_INET (inet-aton "127.0.0.1") 80)
+  (display "GET / HTTP/1.0\r\n\r\n" s)
+
+  (do ((line (read-line s) (read-line s)))
+      ((eof-object? line))
+    (display line)(newline)))
+@end example
+
+@node Internet Socket Server
+@subsubsection Internet Socket Server Example
+@cindex socket server example
+
+The following example shows a simple Internet server which listens on
+port 2904 for incoming connections and sends a greeting back to the
+client.
+
+@example
+(let ((s (socket AF_INET SOCK_STREAM 0)))
+  (setsockopt s SOL_SOCKET SO_REUSEADDR 1)
+  ;; Specific address?
+;  (bind s AF_INET (inet-aton "127.0.0.1") 2904)
+  (bind s AF_INET INADDR_ANY 2904)
+  (listen s 5)
+
+  (simple-format #t "Listening for clients in pid: ~S" (getpid))
+  (newline)
+
+  (while #t
+         (let* ((client-connection (accept s))
+                (client-details (cdr client-connection))
+                (client (car client-connection)))
+           (simple-format #t "Got new client connection: ~S" 
client-details)
+           (newline)
+           (simple-format #t "Client address: ~S"
+                          (gethostbyaddr
+                           (sockaddr:addr client-details)))(newline)
+           ;; Send back the greeting to the client port
+           (display "Hello client\r\n" client)
+           (close client))))
+@end example
+
+

  @node System Identification
  @section System Identification




_______________________________________________
Bug-guile mailing list
Bug-guile@gnu.org
http://mail.gnu.org/mailman/listinfo/bug-guile


  reply	other threads:[~2002-03-18 23:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-18 17:55 [PATCH] posix.texi: added additional examples Ian Sheldon
2002-03-18 20:39 ` Neil Jerram
2002-03-18 23:16   ` Ian Sheldon [this message]
2002-03-19 19:45     ` Neil Jerram
2002-04-02  1:14       ` Rob Browning
2002-04-03 18:29       ` Marius Vollmer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3C967532.6090806@kaidea.freeserve.co.uk \
    --to=is+guile@kaidea.freeserve.co.uk \
    --cc=bug-guile@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).