タグ

Socketに関するi_matsuiのブックマーク (5)

  • Socket通信の勉強(1) - ディスクリプタ/TCPによる通信

    Socket通信を勉強する。 前提プログラムはMac(Mojave)で動かす。ネットワークに関する知識はほんの少しある。使うプログラミング言語はC++だが、ここではbetter Cの意味でしか用いない。(寄り道) ファイル入出力Socket通信を学んでいると、ファイルディスクリプタが出てきたので、まずはそこから勉強する。 関数定義についてはJM Projectから引用したものを用いる。これはLinuxマニュアルと同じらしいので、恐らくmanコマンドで出力されるものと同じである(ただし英語であるが)。 ファイルディスクリプタとはファイルディスクリプタとは、ファイルと結びつけられた単なる整数値である。データの読み書きを行う場合は、この整数値を指定してアクセスする。例えばファイルtest.txtのファイルディスクリプタが4だった場合、読み書きをする関数read/writeには引数4を指定する。

  • TCP実験室 - Qiita

    #1 はじめに TCPについて、思いついたまま、いろいろ実験をしてみようと思います。 なお、TCPの各種状態の作り方は、TCPの各種状態の作り方を参照してください。 #2 環境 VMware Workstation 12 Player上のゲストマシンを使っています。 ゲストマシンはサーバとクライアントの2台構成です。 サーバ、クライアントともに下記設定です。 [root@server ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@server ~]# uname -r 3.10.0-514.el7.x86_64 [root@server ~]# cat /etc/hosts 192.168.0.100 server 192.168.0.110 client #3 CLOSE_WAITとは? パッ

    TCP実験室 - Qiita
  • Webサーバにおけるソケット周りの知識 - Carpe Diem

    概要 サーバサイドの仕事をしているとソケットという概念に遭遇すると思います。 ソケットを理解すると TCPセッションの流れ ulimitでnofileを上げないとコネクション増加した時のToo many open filesが出るのはなぜか なぜサーバの待ち受けポートは1つで、クライアントのポートは接続するたびに新しいポートが必要なのか unix domain socketはなぜファイルパスを指定するのか Circusはなぜgraceful restartが可能なのか といったことが分かるようになります。 今回そういったソケット周りの知識を理解するためにまとめます。 ファイルディスクリプタ ソケットを扱う上で切り離せないのがファイルディスクリプタ(以下fd)です。 fdとはファイルやソケットなどを抽象化した仕組みです。 ファイルディスクリプタという名称ですが、ファイルに限らず標準入出力、ソ

    Webサーバにおけるソケット周りの知識 - Carpe Diem
  • ソケットプログラミングのTips

    概要 ソケットプログラミングに関するTipsをメモレベルで記載する。 切断検知と経路切断 TCPコネクションの切断検出 対向がclose()、shuttdown()、プログラム終了等をしたときの切断検出について。 OSをシャットダウンさせた場合も通常はアプリケーションの終了処理が走り、正常な切断が動く。 受信側の切断検出は、recv()がlength==0で返ってきたとき、または、errno==ECONNRESETとなる。(ECONNRESETはRSTによって切断された場合) 送信側の切断検出は、切断された後2回目のsend()がエラーとなる。 ※相手がclose()→こちらがsend()→相手にパケットが飛ぶが待ち受けプログラムがいないためRST応答が来る→もう1度send()→エラー ※send()自体はカーネルの送信バッファにデータコピーするだけなので、TCPレベルの応答(送信完了)

    ソケットプログラミングのTips
  • ソケット通信メモ(Hishidama's TCP/UDP Socket Memo)

    TCPソケット サーバータイプとクライアントタイプの両方のアプリケーションを作らないといけないなら、サーバータイプから作るべきだろう。 (クライアントタイプだけ先に作っても動かせないから。まぁサーバータイプだけ動かしても、待ってるだけであまり意味無いけど(苦笑)) でも仕組みはクライアントタイプの方が簡単。 TCPを使う場合は、通信の最初にコネクションの確立を行う必要がある。 サーバーでlisten・accept、クライアントでconnectが成功すればコネクションが確立したことになる。 どのポート番号を使うかについては、サーバー側はアプリケーションの作成者が決める必要がある。[/2007-06-16] クライアント側のポート番号は、ソケットライブラリがそのマシンで使っていない番号を自動的に割り振ってくれるので、気にしなくてよい。 IANAの基準では、1~1023は「よく知られたポート(w

  • 1