本文简要介绍ruby语言中  Socket.tcp_server_loop  的用法。
用法
tcp_server_loop(host=nil, port) { |socket, client_addrinfo| ... }在port 上创建一个 TCP/IP 服务器,并为每个接受的连接调用该块。使用套接字和 client_address 作为  Addrinfo  对象调用该块。
如果指定了host,则它与port 一起用于确定服务器地址。
块返回时套接字未关闭。所以应用程序应该明确地关闭它。
此方法按顺序调用块。这意味着在块返回之前不接受下一个连接。所以并发机制,例如线程,应该用于一次服务多个客户端。
请注意, Addrinfo.getaddrinfo  用于确定服务器套接字地址。当 Addrinfo.getaddrinfo  返回两个或更多地址时,例如 IPv4 和 IPv6 地址,它们都被使用。  Socket.tcp_server_loop  如果至少可以使用一个套接字,则成功。
# Sequential echo server.
# It services only one client at a time.
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
  begin
    IO.copy_stream(sock, sock)
  ensure
    sock.close
  end
}
# Threaded echo server
# It services multiple clients at a time.
# Note that it may accept connections too much.
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
  Thread.new {
    begin
      IO.copy_stream(sock, sock)
    ensure
      sock.close
    end
  }
}相关用法
- Ruby Socket.tcp_server_sockets用法及代码示例
- Ruby Socket.tcp用法及代码示例
- Ruby Socket.pair用法及代码示例
- Ruby Socket.udp_server_sockets用法及代码示例
- Ruby Socket.unpack_sockaddr_in用法及代码示例
- Ruby Socket.udp_server_recv用法及代码示例
- Ruby Socket.new用法及代码示例
- Ruby Socket.getservbyport用法及代码示例
- Ruby Socket.listen用法及代码示例
- Ruby Socket.gethostname用法及代码示例
- Ruby Socket.unix_server_loop用法及代码示例
- Ruby Socket.sockaddr_un用法及代码示例
- Ruby Socket.accept用法及代码示例
- Ruby Socket.recvfrom_nonblock用法及代码示例
- Ruby Socket.bind用法及代码示例
- Ruby Socket.getaddrinfo用法及代码示例
- Ruby Socket.getnameinfo用法及代码示例
- Ruby Socket.unix_server_socket用法及代码示例
- Ruby Socket.accept_nonblock用法及代码示例
- Ruby Socket.recvfrom用法及代码示例
- Ruby Socket.unix用法及代码示例
- Ruby Socket.gethostbyaddr用法及代码示例
- Ruby Socket.ip_address_list用法及代码示例
- Ruby Socket.sysaccept用法及代码示例
- Ruby Socket.getservbyname用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Socket.tcp_server_loop。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
