C で簡単なチャットを作成する必要があります。1 つのプログラムは、クライアントが接続するサーバーであり、クライアントが送信するメッセージを管理します。クライアントは別のプログラムであり、ここで問題が発生しました。他のクライアントから (サーバー経由で) メッセージを受信し、コンソール出力に出力できるようにしたいと考えています。しかし同時に、私は自分のメッセージを書き、それをサーバー (そして他のクライアント) に送信できるようにしたいと考えています。
問題は、メッセージを書いている間にサーバーからメッセージを受け取ると、入力全体が台無しになることです。メッセージ出力エリアとメッセージ入力エリアをどうにか分けたい。それを行う良い方法はありますか?これは、クライアント プログラムの私のフォークです (まだドラフトです)。
int pid = fork();
if(pid==0){
do{
scanf("%s", msg);
printf("sending the message to the server\n");
} while(strcmp(msg, "exit"));
kill(getppid(), SIGKILL);
printf("kill the child\n");
} else {
while(1){
printf("receiving a new message\n");
sleep(1);
}
}
編集:
わかりました、単純な ncurses アプリケーションを作成しましたが、もう 1 つ問題があります。2 つのプロセスがある場合 (fork() の後)、ncurses で同じウィンドウに書き込むにはどうすればよいですか? それらには別々のウィンドウがあるようで、入力を提供するか、サーバーから出力を読み取ることができますが、両方を1つの画面に表示することはできません。何か提案はありますか?クライアントとサーバーの間だけで、それらの間で IPC を作成したくありませんでした。
EDIT2:
締め切りが近づいているため、最終的にncursesのアイデアをあきらめました。プログラムがマルチスレッド (マルチプロセスではない) の場合は完全に動作しますが、fork を使用するとすべてがめちゃくちゃになります。とにかく、私は最終的なプロジェクトを ncurses で作成したので、まだ有用な提案です :)