home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / winsock / simple / readme.txt < prev    next >
Text File  |  1996-05-22  |  4KB  |  99 lines

  1. Simple IP samples. 
  2. -----------------
  3.  
  4. simples.c:
  5. ----------
  6.  
  7. This is a very simple-minded TCP/UDP server. It listens on a specified port
  8. for client connections. When a client connects, the server receives data,
  9. echoes it back to the client and closes the connection.
  10.  
  11. Usage:
  12.     simples -p <protocol> -e <endpoint> -i <interface>
  13.  
  14. Where,
  15.  Protocol is one of TCP or UDP,
  16.  
  17.  Endpoint is the port number to listen on,
  18.  
  19.  Interface is the IP address to bind to (for multihomed machines this can be
  20.    specified. Machines with just one network interface will not need this
  21.    parameter, typically).
  22.  
  23.  
  24.     Note:
  25.     ----
  26.  
  27.     There are differences in the way TCP and UDP "servers" can be written. For
  28.     TCP, the paradigm of bind(), listen() and accept() is widely implemented. 
  29.     For UDP , however, there are two things to consider:
  30.  
  31.     1. listen() or accept() do not work on a UDP socket. There are APIs
  32.     that are oriented towards connection establishment, and are not applicable
  33.     to datagram protocols. To implement a UDP server, a process only needs to
  34.     do recvfrom() on the socket that is bound to a well-known port. Clients
  35.     will send datagrams to this port, and the server can process these.
  36.  
  37.     2. Since there is no connection esablished, the server must treat each
  38.     datagram separately.
  39.  
  40.  
  41. simplec.c
  42. ---------
  43.  
  44. A simple TCP/UPD client application. It connects to a specified IP address and
  45. port and sends a small message. It can send only one message, or loop for a
  46. specified number of iterations, sending data to the server and receiving a
  47. response.
  48.  
  49. Usage:
  50.     simplec -p <protocol> -n <server> -e <endpoint> -l <iterations>
  51.  
  52. Where,
  53.  Protocol is TCP or UDP.
  54.  Server is the IP address/ name of the server
  55.  Endpoint is the port number the server is listening on
  56.  iterations specifies how many messages to send. 
  57.  
  58.  '-l' without any arguments will cause the client to send & receive  messages 
  59.  until interrupted by Ctrl-C.
  60.  This option *will not* work against simples.exe as the TCP server. This is
  61.  because simples.exe closes the socket after one transaction. You will need
  62.  something like the overlap sample which keeps the socket open indefinitely.
  63.  
  64.  
  65.  
  66.  
  67.     Note:
  68.     ----
  69.     As explained for simples.c, there is no concept of a connection in UDP
  70.     communications. However, we can use connect() on a UDP socket. This
  71.     establishes the remote (IPaddr, port) to used when sending a datagram.
  72.     Thus, we can use send() instead of sendto() on this socket.
  73.  
  74.     This makes the code exactly the same for UDP and TCP sockets. However, it
  75.     must be realized that this is still connectionless datagram traffic for
  76.     UDP sockets, and must be treated as such.
  77.  
  78.  
  79. ioctl.c
  80. -------
  81.  
  82. This is a TCP-only server that shows how to use select() in a Win32 console
  83. application. The server creates a socket to listen() on, and makes it
  84. non-blocking with ioctlsocket(), and then calls select().
  85. When a client connects to this server, the server multiplexes between the new
  86. connection and the original listening socket, again using select(). 
  87. As soon as a new connection is established, the server breaks the connection
  88. with the first client.
  89.  
  90. Usage: (same as simples)
  91.     
  92. This sample illustrates the point that select() is not very useful in Win32
  93. applications, since it is difficult to keep track of every open socket and
  94. test it for readiness when select() returns.
  95.  
  96. Applications should use WSAAsyncSelect for GUI-based event
  97. selection, or Overlapped I/O and native Win32 wait functions to achieve the
  98. same effect as select.
  99.