Ruby on Ubuntu (WSL) を使用して TCP チャット サーバーをセットアップしようとしたときに「接続が拒否されました」エラーをトラブルシューティングするにはどうすればよいですか?
概要
Rubyを使用してTCPチャットサーバーを作成したいと考えています。 Ubuntu ターミナル (WSL) でこれを実行しようとすると、次の問題が発生します。コマンド telnet localhost 2000 を実行すると、次の出力が表示されます。 試しています::1… 127.0.0.1を試しています… 127.0.0.1を試しています… Telnet: リモート ホストに接続できません: 接続が拒否されました ここに画像の説明を入力してください
Rubyコード:
require 'socket'
server = TCPServer.new(2000) # Server bound to port 2000
while true
connection = server.accept # Wait for a client to connect
connect.print" Enter ur Username: "
name = connection.gets.chomp # chomps removes the new line character
connection.puts "Welcome #{name} to the chat room"
connection.close # Disconnect from the client
end
私が試したこと: Ubuntuターミナル(WSL)でRubyを使ってTCPチャットサーバーを作成してみました。
私が期待していた事: サーバーが正常に起動し、指定されたポート (この場合はポート 2000) で待機することを期待していました。 telnet localhost 2000 コマンドを使用したときは、サーバーへの接続が成功することが予想されました。
実際の結果: 代わりに、telnet コマンドの出力には次のように表示されました。 試しています::1… 127.0.0.1を試しています… 127.0.0.1を試しています… Telnet: リモート ホストに接続できません: 接続が拒否されました
解決策
ホストが接続拒否を返した場合、そのポートでサーバーをリッスンしているプロセスが存在しないことが原因です。
この場合、ローカルホスト上にあるので、そのシステムから netstat を実行し、リッスンしていることを確認できるかどうかを確認します。
お願いします。表示されるエラーは特定のネットワーク インタラクションに起因するものであることに留意してください。場合によっては、「中間」にあるもの (ローカル ソフトウェア ファイアウォールやシステム構成など) が TELNET 接続を傍受し、要求したポートで喜んでリッスンしているプロセスが存在する場合でも、接続を拒否することを決定する可能性があります。