Linux上のCで簡単なインスタントメッセンジャープログラムを書いています。
現在、ローカルマシンのポートにソケットをバインドし、ローカルマシンのIPとポートに接続されている別のプログラムから送信されるテキストデータをリッスンするプログラムがあります。
このクライアントにテキストデータをプログラムに送信させstdout
、ローカルマシンで使用して表示させることができます。ただし、私のプログラムはクライアントマシンから送信されたテキストを聞いて表示するのに忙しいため、クライアントマシンにデータを送り返す方法をプログラムすることはできません。
新しいプロセスを作成するにはどうすればよいですか(クライアントマシンから送信されたテキストをリッスンして表示し、そのテキストを取得して他のプログラムに送信し、stdout
他のプログラムがstdin
クライアントマシンへの送信を処理します) )または、別々のジョブ(送信、受信、表示)を実行し、適切なデータを相互に送信する2つのプログラムを作成しますか?
それが奇妙な言葉で書かれている場合は申し訳ありませんが、必要に応じて明確にします。exec
、、などを調べましたがexecve
、fork
これが調べるのに適切なパスであるかどうか、または私が見逃しているより簡単な方法があるかどうかについて混乱しています。
どんな助けでも大歓迎です、ありがとう。
編集:振り返ってみると、これは2つの別々のプログラムではるかに簡単に達成できると思いました。1つはIMサーバーで、もう1つはIMクライアントです。
IMクライアントはIMサーバープログラムに接続し、必要なテキストをIMサーバーに送信します。次に、IMサーバーは、送信されたデータをバッファー/ファイルに記録し、各クライアントから送信されたテキストにクライアントの名前/ IPを追加して、そのテキストを(name:textの形式で)に送信します。接続されている各クライアント。
これにより、との複雑なプロセス間/プログラム通信の必要がなくなり、代わりに、stdin
を介してサーバーから送信されたテキストをクライアントプログラムが表示し、を使用して任意のテキストをに送信する、単純なクライアント/サーバー通信方法を使用します。サーバ。 stdout
stdout
stdin
そうは言っても、私はまだ私の最初の質問に答える誰かに興味があります:科学のために。読んでくれてありがとう。誰かが私のメンタルブレーンストーミングやコミュニティからの回答から恩恵を受けることを願っています。