Netcat で簡単なチャットサーバーを作成する
このステップでは、追加のオプションを使用して Netcat を使ってより堅牢なチャットサーバーを作成する方法を学びます。この例では、Netcat を使ってより永続的な接続を実現する方法を示します。
まず、役立つ Netcat の追加オプションについて理解しましょう。
-k: このオプションは、クライアントが切断された後もサーバーが引き続き待ち受けを続けることを可能にし、時間の経過とともに複数の接続を許可します。
-v: これは詳細出力を有効にし、接続に関するより多くの情報を提供します。
クライアントが切断された後も実行を続けるチャットサーバーを作成しましょう。最初のターミナルで次のコマンドを実行します。
cd ~/project
nc -l -k -v 7777
Netcat が待ち受けていることを示す出力が表示されるはずです。
Listening on 0.0.0.0 7777
このサーバーは、クライアントが切断された後も実行を続け、新しい接続を受け入れます。
次に、2 番目のターミナルでこのサーバーに接続します。
cd ~/project
nc localhost 7777
最初のターミナルに新しい接続があったことを示すメッセージが表示されるはずです。例えば、以下のようなメッセージが表示されます。
Connection from 127.0.0.1 port 7777 [tcp/*] accepted
これで、以前と同様にターミナル間でメッセージを交換できます。一方のターミナルにメッセージを入力し、Enter キーを押すと、もう一方のターミナルにメッセージが送信されます。
サーバーの永続性をテストするには、2 番目のターミナルで Ctrl+C を押してクライアントを切断します。その後、同じコマンドを使用して再接続します。
nc localhost 7777
再度接続してチャットを続けることができ、クライアント接続の間でサーバーがアクティブなままであることがわかります。
チャット会話のログを保存するには、サーバーコマンドを変更して、すべての受信メッセージをファイルに保存することができます。現在のサーバーを停止するには Ctrl+C を押し、出力をリダイレクトして新しいサーバーを起動します。
cd ~/project
nc -l -k -v 7777 | tee chat_log.txt
このコマンドは tee ユーティリティを使用して、受信したメッセージを画面に表示すると同時に chat_log.txt ファイルに保存します。
2 番目のターミナルから再度接続して、いくつかのメッセージを送信します。数回のメッセージ交換の後、クライアントを切断し(2 番目のターミナルで Ctrl+C を押す)、チャットログファイルを確認します。
cat ~/project/chat_log.txt
クライアントターミナルから送信したメッセージが表示されるはずです。
サーバーを停止するには、最初のターミナルで Ctrl+C を押します。
このステップでは、Netcat を使ってより堅牢なチャットサーバーを作成する方法と、通信をログに残す方法を示しました。これは、記録保存やデバッグの目的に役立ちます。