0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自分用メモ linuxネットワーキングプログラミング

Last updated at Posted at 2019-10-21

前書き

基本ネットや書籍から拾ってきた内容を雑にメモしているだけ
文面以上に内容をもっと深堀りたかったら、リンク貼るのでそこを見てください
ちなみにITインフラ技術の実験室ってサイトが良すぎたので何かあったら基本的にそこに全部載ってる

用語

ファイル

ファイルはインターフェイスです
ファイルインターフェイスが実装されたオブジェクトを操作すると、ローカルの補助記憶装置に対して読み書きできたり、通信相手と送受信できたりします。

  • 補助記憶装置に対して読み書きするファイル[クラス|オブジェクト]は単純にファイルと呼ぶ
  • プロセス間通信やtcp/udp等を利用する際に利用するファイル[クラス|オブジェクト]はソケットファイルと呼ぶ

記述子 (descriptor

識別子は識別する為のもの。
記述子は記述する為のもの。記述するためには識別したり、読み込んだりする必要もある。
なので、記述子は識別子よりも強力。
記述子は基本的に特定の関数やクラス等で引数として与え、その関数やクラスを利用して読み書きができるようになる。
Kernelレベルで実装されているらしい。

記述子には

  • socket descriptor
  • socket file descriptor
  • file descriptor
  • field descriptor
    等、その他沢山ある。 (発案の数だけある

参考資料:
https://unix.stackexchange.com/questions/233237/etymology-of-descriptor-in-file-descriptor/295746#295746
https://rust-jp.slack.com/archives/C8FLSR5F1/p1571635210176900

Cでソケットを扱う際の各種関数等の仕様

この内容の軽いメモ
https://www.infra.jp/programming/network_programming_3.html#multiplexing

accept

待機待ち行列があれば、そこから1つ取り出す。
なければ、ブロッキングする。

select

引用: https://www.infra.jp/programming/network_programming_3.html#multiplexing

select()はaccept()やrecv()同様、処理をブロックしますが、複数のディスクリプタを同時に見張ることができるため、クライアントからの新規接続や接続中クライアントからの受信など、記述子の変化があった場合にどのような変化かに関わらず処理を先に進められます。
また、各ディスクリプタに変化があるまでブロックするため、CPUパワーを無駄に消費することもありません。

poll

selectより細かく指定できる

EPOLL

数千コネクションでも耐えられる様にチューニングされている。
pollの上位互換だが、linux固有の実装らしい

Cでネットワーキングプログラミングをする

...今時間が無いため後で書く

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?