Why ZeroMQ? ZeroMQ (also known as ØMQ, 0MQ, or zmq) looks like an embeddable networking library but acts like a concurrency framework. It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply. It's fast enough to be the fabric
connect(2) のエラー TCP において connect(2) 呼出し時に発生する可能性のあるエラーは以下の通りです。 タイムアウト RST 受信 EHOSTUNREACH また ENETUNREACH シグナル受信 その他 まず、connect(2) 時の正常な流れをしっかり覚えておいてください。 (connect(2) を呼んで) SYN を送る SYN+ACK が返ってくる (ここで connect(2) から戻る) ACK を送る タイムアウト もし仮に、SYN を送ったものの、相手側から SYN+ACK が返ってこない場合は、 (ローカルの TCP スタックが) しつこく SYN を再送します。何度 SYN を送っても SYN+ACK が返ってこない場合はあきらめてタイムアウトします。 「SYN+ACK が返ってこない」というのは、例えば以下のようなケースが考えられます。
raw TCP, UDP は Winsock 2 では直接操作できないことに気をつけ てください。その代わりに、IP_HDRINCL (raw IP とも言う)を使って、 IP と TCP, UDP の両方のヘッダを自分で作らなくてはなりませ ん。 Windows NT と Windows 2000 上では、管理者グループに属している ユーザしか raw ソケットをオープンすることができません。 4.2 - Winsock を使って LAN 上のパケットをキャプチャするにはどうすればよいのですか? Winsock では、無差別 IP パケットキャプチャ(プロミスキャスモー ド) は利用できません。生のパケットデータを得るには、Winsock を経 由せずに、トランスポートデータインターフェース(TDI)かネットワー クデバイスインタフェース仕様(NDIS)層と話をしなければなりません。 T
Previous Next Table of Contents 3. クライアントアプリケーションの作成 (TCP/SOCK_STREAM) 3.1 文字列をインターネットアドレスに変換するにはどうすれば良いのですか? もしホストのアドレスをコマンド行から読んでいるのであれば、それが aaa.bbb.ccc.ddd スタイルのアドレスであるか host.domain.com スタ イルのアドレスであるかを知ることはできないでしょう。私がこれに関 して行う方法は、まず aaa.bbb.ccc.ddd タイプのアドレスであるとし てそれを使おうとします。そして、それが失敗したら、名前の検索を行 います。以下に例を示します: /* アスキー文字列を in_addr 構造体に変換する。アドレスがみつから なかった場合には NULL が返される。 */ struct in_addr *atoaddr
Chapter 6. Handling many sockets at once using select() 6.5. Blocking vs. non-blocking sockets So far in this chapter, you've seen that select() can be used to detect when data is available to read from a socket. However, there are times when its useful to be able to call send(), recv(), connect(), accept(), etc without having to wait for the result. For example, let's say that you're writing a we
Boost C++ Libraries ...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards This tutorial program shows how to use asio to implement a client application with TCP. We start by including the necessary header files. #include <array> #include <iostream> #include <boost/asio.hpp> The purpose of this applica
【質問】 たまに、受信したレコードの最後が途中で切れていることがあります。どうしてでしょうか? 【回答】 SNA であればフレーム単位の伝送なのでこのようなことは起こりませんが、TCPIP はバイト単位で伝送を行います。 そのため、伝送中にレコードが複数のパケットに分割され、受信したバッファーにレコードの途中までしか入っていない事が あります。 つまり、400 バイトのレコードを send() し、400 バイトの Buffer 長を指定して recv() を行ったとしても、1回の recv() で、400 バイト全てのデータがとれる保証はありません。 800 バイトの Buffer 長を指定して recv() を行うと、2回分のレコードが1回の recv() で受信できるかもしれません。 固定長データの送受信ならば、受信したあとに足りないバイト数分の recv() を再度実行するようにコ
ネットワークプログラミングの超基礎 とある科目のレポートで、基本を理解せずにサンプルプログラムをいじくっている 学生があまりに多いのを見てしまい、見るに見かねてこんな文書を書いてみました。 「超基礎」なので本当に基本の基本しか扱いません。 stream (TCP) のみを扱います。 間違ってるところとか見つけたら教えて下さい。 まえがき ネットワークプログラミングでハマりやすいのは、たぶん、 下準備が多く、何をやっているか分からない (そもそもどこが下準備なのかも分からない) 結局のところ、どこが本質なのか分かりにくい といったあたりにあるのではないでしょうか。 ということで、まずその辺をはっきりさせるために、 通信を行うための必要最小限のプログラムで、その骨格を見てみることにしましょう。 Inhalt (Table of Contents) 簡単なクライアントプログラム 簡単なサーバプロ
Previous Next Table of Contents 2. クライアントとサーバ(TCP/SOCK_STREAM)両方に関する質問 2.1 相手側のソケットが閉じられたことをどうやって知ることができますか? Andrew Gierth 氏 ( andrew@erlenstar.demon.co.uk) より: 私の知る限り… 相手側が (SO_LINGER を使ったややこしいことをしないで) close() するか終了したとすると、こちらの read() の呼び 出しは 0 を返すはずです。同じ場合で、write() 呼び出しで何が 起こるかは、もうちょっとわかりづらいです。直後の呼び出し時ではな く、その次の呼び出し時にEPIPE が返るでしょう。 もし相手が再起動するか l_onoff = 1, l_linger = 0 を設定して から閉じたとすると、read() からは(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く