當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Socket.tcp_server_loop用法及代碼示例


本文簡要介紹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-lang.org大神的英文原創作品 Socket.tcp_server_loop。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。