web-dev-qa-db-ja.com

netcatを使用して簡単なチャットを構築する方法は?

現在、プロジェクトに取り組んでおり、netcatライブラリを使用して簡単なチャットアプリケーションを実装しています。

クライアントは、ポート番号とコマンドを入力するように求められます

nc -l -p xxxx

ここで、xxxxはクライアントが入力したポート番号です。

同様に、ホストは同じポート番号の入力を求められ、接続は次を使用して確立されます。

nc <ip_address> -p xxxx

ただし、メッセージを入力しているユーザーのユーザー名は表示されないため、空白のチャットエクスペリエンスが得られます。

hey
hello
what's up
Nothing

代わりに、次のようなものにしたい

Foo : hey
Boo : hello
Foo : what's up
Boo : Nothing

netcatを使用してこの機能を実現できますか、またはこれを行う他の機能はありますか?

27
Sachin Kamath

このようなことができます。

Aliceがサーバーであると仮定します。彼女はタイプします:

mawk -W interactive '$0="Alice: "$0' | nc -l -p <port_number> <ip_of_alice>

次に、Bobはそのサーバーに接続します。彼はタイプします:

mawk -W interactive '$0="Bob: "$0' | nc <ip_of_alice> <port_number>

mawk行は、人の前に付けた名前を「チャット」に追加するだけです。バッファーなしの書き込みをstdoutに設定し、行バッファー付きの読み取りをstdinに設定するには、-W interactiveが必要です。


アリスはHi Bobを入力し、次のように表示されます:

Hi Bob

ボブは見ています:

Alice: Hi Bob

ボブはHi Aliceと入力し、次のように表示されます。

Alice: Hi Bob
Hi Alice

アリスは見ている:

Hi Bob
Bob: Hi Alice
34
chaos