Ruby の TCPSocket と TCPServer に関する例をオンラインで読んでいますが、これに対するベスト プラクティスが何であるかはまだわかりません。実行中の TCPServer があり、複数の接続/クライアント間でソケットを開いたままにしたい場合、それらを開いたままにしておく責任があるのはサーバーですか、それともクライアントですか?
TCPServer を実行しているとしましょう:
server = TCPServer.new(8000)
loop do
client = server.accept
while line = client.gets
# process data from client
end
client.puts "Response from server"
client.close # should server close the socket?
end
クライアント:
socket = TCPSocket.new 'localhost', 8000
while line = socket.gets
# process data from server
end
socket.close # should client close the socket here?
私が見たすべての例にはsocket.close
最後に がありますが、これは接続を閉じるため、私が望むものではないと思います。サーバーとクライアントは、データをやり取りする必要があるため、開いた接続を維持する必要があります。
PS: 私はネットワーキングに関してかなり初心者なので、私の質問が完全にばかげているように聞こえる場合は、親切にお知らせください。