diff options
Diffstat (limited to 'ext/socket/tcpserver.c')
-rw-r--r-- | ext/socket/tcpserver.c | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/ext/socket/tcpserver.c b/ext/socket/tcpserver.c index 7bb02d91f0..6596733239 100644 --- a/ext/socket/tcpserver.c +++ b/ext/socket/tcpserver.c @@ -128,14 +128,40 @@ tcp_sysaccept(VALUE sock) return rsock_s_accept(0, fptr->fd, (struct sockaddr*)&from, &fromlen); } -/* - * Document-class: ::TCPServer < TCPSocket - * - * TCPServer represents a TCP/IP server socket. - */ void rsock_init_tcpserver(void) { + /* + * Document-class: TCPServer < TCPSocket + * + * TCPServer represents a TCP/IP server socket. + * + * A simple TCP server may look like: + * + * require 'socket' + * + * server = TCPServer.new 2000 # Server bind to port 2000 + * loop do + * client = server.accept # Wait for a client to connect + * client.puts "Hello !" + * client.puts "Time is #{Time.now}" + * client.close + * end + * + * A more usable server (serving multiple clients): + * + * require 'socket' + * + * server = TCPServer.new 2000 + * loop do + * Thread.start(server.accept) do |client| + * client.puts "Hello !" + * client.puts "Time is #{Time.now}" + * client.close + * end + * end + * + */ rb_cTCPServer = rb_define_class("TCPServer", rb_cTCPSocket); rb_define_method(rb_cTCPServer, "accept", tcp_accept, 0); rb_define_method(rb_cTCPServer, "accept_nonblock", tcp_accept_nonblock, 0); |