Techioz Blog

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 接続を傍受し、要求したポートで喜んでリッスンしているプロセスが存在する場合でも、接続を拒否することを決定する可能性があります。