Unix Socket-Server Examples

広告

プロセスをTCPサーバーにするには、以下の手順に従う必要があります−

                                                                                  • socket()システムコールでソケットを作成します。

                                                                                  • bind()システムコールを使用してソケットをアドレスにバインドします。 インターネット上のサーバーソケットの場合、アドレスはホストマシン上のポート番号で構成されます。

                                                                                  • listen()システムコールでの接続をリッスンします。

                                                                                  • accept()システムコールで接続を受け入れます。 この呼び出しは、通常、クライアントがサーバーに接続するまでブロックします。read()およびwrite()システムコールを使用してデータを送受信します。

                                                                                  ここで、これらの手順をソースコードの形式にしてみましょう。 このコードをファイルサーバーに入れます。cをgccコンパイラでコンパイルします。

                                                                                  複数の接続を処理する

                                                                                  サーバーが複数の同時接続を処理できるようにするには、上記のコードで次の変更を行います−

                                                                                  • accept文と次のコードを無限ループ接続が確立されたら、fork()を呼び出して新しいプロセスを作成します。

                                                                                  • 子プロセスはsockfdを閉じ、doprocessing関数を呼び出し、新しいソケットファイル記述子を引数として渡します。 2つのプロセスが会話を完了すると、doprocessing()が返すことで示されるように、このプロセスは単に終了します。

                                                                                  • 親プロセスはnewsockfdを閉じます。 このコードはすべて無限ループ内にあるため、acceptステートメントに戻り、次の接続を待機します。

                                                                                  次のコードseqmentは、doprocessing関数の簡単な実装を示しています。

                                                                                  広告



コメントを残す

メールアドレスが公開されることはありません。