私はCとLinuxでTCPソケットサーバーを実装しています。同時に多くのリクエストを処理するチャットサーバになります。ここでは、それは私が見たものからセットアップC/Linux TCPソケットサーバー
create a socket
bind to a well-known port
use listen to place in passive mode
while (1)
{
accept a client connection
fork
if (child)
{
communicate with new socket
close new socket
exit
}
else
{close new socket}
}
ある方法についての擬似コードは、「新しいソケットとの通信」の部分はバッファを読んで、その後、おそらくバッファへの書き込みで構成され、その後、ソケットを閉じます。私はソケットが永続的な接続であると考えていたと思いましたか?クライアントがサーバにもっと多くのデータを送信したいときに毎回再接続する必要がある場合、これは非効率的ではなく、ソケットの目的を破るものではありませんか?
あなたの宿題ですか? –
libeventやlibevなどのイベントライブラリを使用する必要があります。 –
すべてのクライアントに 'fork'する必要はありません。 'select'や' poll'(あるいは 'libev'や' libevent'など何かのイベントループを持つライブラリ)のような多重化システムコールの周りにイベントループが必要でしょう。そのライブラリは多重化を行います。 –