タグ

socketに関するakaneharaのブックマーク (19)

  • prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー

    Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の

    prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー
  • epoll を使った echo サーバ - odz buffer

    自分用メモ。epoll & Non-Blocking IO による echo サーバの例。 使い方のテスト以上のものではないので、そのままではいろいろまずい。epoll_create や socket で取得した file descriptor を close してなかったり。まねしないように。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/epoll.h> #include <netinet/in.h> #define SERVER_PORT 10007 #define MAX_EVENTS 10 #define BAC

    epoll を使った echo サーバ - odz buffer
  • 雑多の備忘録 - Perl - IO::Socket::INET

  • IO::Select - OO interface to the select system call - Perldoc Browser

  • PSGIアプリでWebSocketを使う場合、responderはどうすべきか? - DebugIto's diary

    Plack::App::WebSocketを実装していて、「PSGIのresponderをどう扱うべきか?」に悩みました。 Plack::App::WebSocketは内部で以下のようなことをしています。 my $env = shift; my $fh = $env->{"psgix.io"}; return sub { my $responder = shift; ... # WebSocket communication on $fh }; PSGI拡張仕様で定義されている"psgix.io"から生ソケットを取り出し、あとはモジュール側で勝手にWebSocket通信をする、といった具合です。Amon2::Plugin::Web::WebSocketやPocketIOもこういった実装になっています。 しかしここで、$responderはどうすればいいでしょうか? $responderをコ

    PSGIアプリでWebSocketを使う場合、responderはどうすべきか? - DebugIto's diary
  • 雑多の備忘録 - Perl - ソケット

  • ssコマンドの使えそうなもののメモ · さよならインターネット

    September 6, 2014 $ss -ltと$ss -ltpは使える。 -iは面白いけど当に確認するならngrepかtcpdumpだろうな セッションを開いているホスト名を名前解決しない(デフォルト) $ss -n セッションを開いているホスト名を名前解決する $ss -r TCPのセッションのみ表示 $ss -t $ss -A tcp UDPのセッションのみ表示 $ss -u $ss -A udp TCPとUDPのセッションのみ表示 $ss -tu $ss -A tcp,udp UNIX Domainのセッションのみ表示 $ss -x $ss -A unix 特定のセッションの状態のものを抽出 $ss -t state fin-wait-2 TCPでLISTENしているポートを表示 $ss -lt TCPでLISTENしているポートのプロセス名を表示 $ss -ltp コマンド

  • http://www.g-ishihara.com/perl/network01.html

  • モバイルネットワークと広告配信

    Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray

    モバイルネットワークと広告配信
  • ssコマンドでLinuxのネットワーク/ソケット情報を確認する

    ss - socket statisticsコマンドについて調べました。 ssコマンドは、Linuxのネットワーク/ソケット情報を確認するコマンドのひとつです。 カーネルから直接情報を取得するようで、場合によってはnetstatコマンドより高速に結果を取得することが出来ます。 以下、使いかたの例をメモしました。 ソケットのサマリ # ss -s Total: 280 (kernel 317) TCP: 533 (estab 70, closed 438, orphaned 1, synrecv 0, timewait 437/0), ports 333 Transport Total IP IPv6 * 317 - - RAW 0 0 0 UDP 18 10 8 TCP 95 89 6 INET 113 99 14 FRAG 0 0 0 開いているポートの一覧 # ss -pl State

    ssコマンドでLinuxのネットワーク/ソケット情報を確認する
  • ソケット入門(上)

    ソケット入門(上) ソケットとの出会い 私がソケットプログラミングと出合ったのは、2000年でした。それまでDOSのプログラミングしか知らなかった私にとって、マルチタスクOS上で、複数の相手と同時に通信を行うソケットというものは衝撃的でした。当時、ソケットプログラミングを1から学習しなければならない状況になってしまった時には、すでに仕事を受注した後で、納期も迫っている状態でした。そこで、急いで文献をあさったり、ネットで検索したりしたのですが、なかなか初めての人にわかりやすく説明された文献に出会うことができません。 それでも、なんとか手探り状態でソフトを作り上げ納品したのですが、ソケットプログラミングでは常識的である事、たとえば、0バイト受信後に必須のソケットの切断処理や、ソケットからデーターを受信するバイト数が必ずしも一定ではない事を知らずに作っていたため、ひどく叱られた事を思い出します

  • TCPメモ(Hishidama's TCP Memo)

    片方が他方に対して何らかの電文を送ると、相手は受け取ったという印にACKを返す。 ACKが来なければ相手が受け取っていないということなので、その場合はある程度待ってから再送する。 ACKは他の電文と一緒に送ってもよい。 コネクションは、【相手先IPアドレス・相手先ポート・自分のポート】の組で一意に表される。 コネクションは現在どういう状態にあるかを示すステータスを持っており、イベントに応じて遷移していく。netstatコマンドで表示されるのは、これ。 TCP/IPとソケットの関係 ソケット関数を呼び出すと、ソケットライブラリ(プロトコルスタック?OS?)がTCP/IPの規約に従って通信を行う。 listen(受付開始) サーバー側で接続の受付待ちを開始する。 コネクション(通信相手はいないので、相手先IPアドレス・ポートは無し、自分のポート番号だけ有り)はLISTEN状態になる。 conn

  • コンピューター:C言語講座:TCP/IPプログラム(その1:クライアント)

    コンピューター:C言語講座:TCP/IPプログラム(その1:クライアント) 概要 TCP/IPはイーサーネットなどで使用される標準的なプロトコルで、以前はワークステーション系でのみ使用されていた感じでしたが、最近ではインターネットやイントラネットさらにWindows95の普及によって、非常に広い分野で使われてきています。プロトコル自体は文献がたくさんでておりますし、それほど細かく知らなくても問題は無いのですが、いざ、自分でTCP/IPを使用したプログラムを作成しようとすると以外と文献が少ないものです。 ここでは、実際に通信することを目的として(プロトコルの研究ではなく)、まずはクライアントプログラムを作成してみます。詳細な内容まではとてもホームページに簡単にまとめられる量ではないので、それは文献を参照してください。 通信 通信といっても非常に幅が広いのですが、プログラミングで言うところの通

  • C 言語で echo サーバを作ってみよう (2)

    select によるマルチスレッドサーバ C 言語において select の使い方を説明します。 echo-server-select.c 117: int 118: main(){ 119: fd_set target_fds; 120: fd_set org_target_fds; 121: int sock_optval = 1; 122: int port = 5000; 123: /* リスニングソケットを作成 */ 124: listening_socket = socket(AF_INET, SOCK_STREAM, 0); 125: 126: /* ソケットオプション設定 */ 127: if ( setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, 128: &sock_optval, sizeof(sock_opt

  • Javaで作るTCPサーバ(1)

    このところ暖かい日が続いているなあと思っていたら、急に寒くなって喉の調子を悪くしました。 ところで最近、なぜかSocketからサーバを作る必要があってコードを書いたので、自分の中の整理も含め、JavaでTCPサーバを実装する方法についてまとめたいと思います。 Javaでサーバソケットを扱う Java SE 7において、サーバソケットを扱う方法は3つあります。 まずはいわゆる普通のソケットAPIです。JDK1.0の時代からあるAPIで、(つまりこの旧き良きAPIは1996年から存在します) java.net.ServerSocket を使います。 次に「ノンブロッキング」と呼ばれるモードで処理を行うAPIがあります。java.nio.channels パッケージにある、ServerSocketChannel と Selector を中心に使います。このAPIはJDK1.4で追加されました。

  • サーバプログラム

    (1)のソケット生成ではsocket()システムコールを使ってソケットを 生成します。socket()を呼び出すときは、その引数にはTCP通信に利 用するプロトコルの種類を与えます。ここでプロトコルの種類とはインターネッ ト用のものであることや、TCPやUDPの種別も含まれます。また、socket() の返値はソケット番号という整数値を返します。これは各ソケットの識別 子となります。 socket()を実行した段階ではソケットが作られただけであり、ポー ト番号などは未確定です。そこで、(2)ではbind()システムコールを 使い、(1)で生成したソケットにポート番号など割り当てます。 TCP通信のサーバ側はクライアントから通信接続を待つ側になります。このた め、通信接続を待つための準備作業が必要になります。これには(3)の listen()システムコールを利用します。 ここで準備が整いまし

  • 世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱

    前回、「次回もシグナルのことを書く」と書いたのでシグナルのことを書く*1. ソケットプログラミングの落とし穴は色々あるけど、ここでは個人的に嵌ったシグナル関連の落とし穴に関して書き殴る. 結論から書くと、コネクションが切れたソケットに書き込み(send(2)とかwrite(2)とか、同じものだけど)を行うと、SIGPIPEシグナルが発生してプロセスが強制終了するので、きちんとSIGPIPEシグナルをハンドリングしておこうという話. 以下では、サンプルコードを使って、実際にパイプの書き込み先をkillして、SIGPIPEの発生を疑似体験してみる. SISGPIPEを受けたプロセスの挙動とソケットプログラミングでの対応策 「sigpipe」で検索すると、同様の話はいくらでも記事になっていて、例えば、 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。こ

    世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱
  • TCP socketではwriteの後すぐにcloseしてはいけない

    TCP socketではwriteの後すぐにcloseしてはいけない。 相手側に全てのデータが届いてからcloseする必要がある。 shutdown で書き込み側だけハーフクローズするとよい。 相手側がcloseしてから、こちらをcloseする。相手側がcloseしたことは、readを呼んでブロックさせておくと、読み込みバイト数==0 つまりEOFになったことでわかる。

    TCP socketではwriteの後すぐにcloseしてはいけない
  • ソケットプログラミング HOWTO — Python 3.3.6 ドキュメント

    概要 ソケットはそこかしこで使われているが、最大級に誤解されている技術でもある。この文書はソケットの全体像を俯瞰しており、チュートリアルとしてはあまり役に立たない。実際に動くモノを完成させるには、他にもやらなければいけないことがあるからだ。この文書はソケットの微妙なところ (たくさんある) まではカバーしていないが、恥ずかしくない使い方ができるようになる程度の情報は得られるはずだ。 Sockets¶ INET (すなわち IPv4) ソケットのことしか語らないつもりだが、利用率でいうとソケットの 99% 以上はこれだ。さらに中でも STREAM (すなわち TCP) ソケットに話題を絞ろうと思う - 自分が何をしているのか分かっているのでない限り (分かってるならこの HOWTO なんて要らないだろ!)、 STREAM ソケットが一番分かりやすく、一番性能が出るのだ。そうやって謎に包まれた

  • 1