When you need to send small data packets over TCP, the design of your Winsock application is especially critical. A design that doesn't take into account the interaction of delayed acknowledgment, the Nagle algorithm, and Winsock buffering can drastically affect performance. This article discusses these issues by using a couple of cases studies. It also derives a series of recommendations for send
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "Winsock" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2024年4月) Winsock (Windows Sockets API, WSA) は、Windowsにおいてネットワークソフトウェアがネットワークサービス(特にTCP/IP)にアクセスする方法を定義した技術仕様である。Windows 上のTCP/IPクライアントアプリケーション(FTPクライアントや Gopherクライアント)とTCP/IPプロトコルスタックとの標準インタフェースを定義している。その名称はBSD系UNIXでプログラム間の通信に使われたソケットと呼ばれるA
2.1 - ネット上で入手できるサンプルプログラムはありますか? はい。情報源のページにいくつか、ま た、FAQ の サンプルプログラムの章にもさ らにいくつかリストアップされています。まだ Winsock を始めたばかりであれば、 特に こちらの例が有用でしょう。 2.2 - WSAStartup 呼び出しの前に WSAData 構造体を初期化する必要はあるのですか? いいえ、WSAStartup() 自身が必要なデータを埋めてくれます。 2.3 - Winsock プログラムをコンパイルしようとするとリンクエラーが出ちゃいました。何が悪いんでしょう? おそらく、正しい Winsock インポートライブラリをリンクしていないのでしょ う。16bit の Windows システムでは、winsock.lib が正しいライブラリです。 32bit Windows システムで Winsock
WinSockでクライアントからサーバーに接続する時は connect 関数を使います。 ブロッキングソケットの場合接続されるまで待ちますが、その時のタイムアウトはWinSockの場合20秒ほどになっています。 これでは長すぎるのでもっと短くしたいですよね。 タイムアウト秒数を指定する関数はないので、イベントを使います。 BOOL connect2(SOCKET soc,DWORD dwAddr,WORD wPort,int nTimeout) nTimeout : タイムアウト時間(ms単位。1秒=1000ms) WSAEVENT hEvent; int ret,err,retflag = FALSE; DWORD dwret; WSANETWORKEVENTS events; sockaddr_in addr; //イベント作成 hEvent = WSACreateEvent(
If you are not redirected automatically, Click Here Google
前述したTCPサーバ例では、サーバを終了した直後にもう一度サーバを起動しようとすると、bindがエラーで終了することがあります。 ここでは、その問題を回避するためにSO_REUSEADDRを有効にする方法を説明したいと思います。 TIME_WAIT TCPサーバのプログラムを書いていて、TCPサーバを終了して直後にもう一度起動したときに、 bindが「Address already in use」というようなエラーで失敗してしまったとこは無いでしょうか? 「あれ?もうTCPのサーバプロセスは終了しているのに。何故、bind出来ないのだろう?」と思いつつ、 しばらく時間がたってからもう一度実行すると問題なくbindが成功したりします。 この問題はTCP自体の仕組み(仕様)によって引き起こされています。(winsockの問題ではなく、TCPの仕様です)。 具体的にはTIME_WAIT状態という
Win9x ではオーバーラップ I/Oをカーネルレベルではサポート していません。Win9x 上でオーバーラップI/Oが動作しているのは、 この機能がAPIのレイヤでエミュレートされているからなのです(こ れは、少なくとも Winsock、ファイル、シリアル/パラレルポート の入出力に対して当てはまります)。この意味はつまり、Winsock 仕様で保証される範囲でのオーバーラップ I/O 機能のみを使って いるプログラムは Win9x でも動作しますが、もしたまたま WinNT 4 以降でのみ提供される機能を使ってしまうと、Win9x では動かな くなってしまう、ということです。その一つの例として、ソケット に対して ReadFile()を呼び出す、というのがありま す。これは NT 4以降では問題なく動きますが、Win9x では動きま せん。 単なる分割/集積I/O が必要なだけであれば
はじめに 本稿では、WinSockでパケットモニターを作成し、WindowsでRAWソケットを扱う方法を紹介します。また、GUIプログラムを作成する場合に必須となる「非ブロッキングモード」や、すべてのパケットを取得するための「プロミスキャスモード」についても触れます。 取得したパケットをプロトコルにしたがって表示する処理については、WinPcapを使用したパケットモニターの作成で解説しましたので、詳しくはそちらを参考にしてください。 対象読者 WindowsでC++を使用してネットワーク関連のプログラムを作成される方。 パケットモニターの作成に興味をお持ちの方。 必要な環境 サンプルプログラムは、Windows 2000以降のOSで動作します。 サンプルコードは、C++ Builder 6およびVisual C++ .NET 2003でコンパイルが可能です。 WinSoc
SSL とは SSL (Secure Socket Layer protocol) とは「セキュリティ機能付き HTTP」のことです。 オンラインショッピングサイトで住所・氏名などの個人情報を入力する際、 「このページは暗号化されています」 などとダイアログが表示されることがありますが、 そのとき「http://....」という URL ではなく 「https://....」という URL にアクセスしているはずです。 このとき使用されているプロトコルが SSL です。 SSL を使用しているかどうかは、右図のようなブラウザ右下の鍵のマークを見てもわかります。 鍵がきっちりはまっているのは SSL を使用しているということです。 一方、鍵が外れている状態は SSL を使用していない、ということです。 SSL を使用することによって、以下の効果があります。 盗聴防止 改竄防止 なりすまし防止
このサイトは OpenSSL サイトの日本語訳です。オリジナルサイトのドキュメントは更新されていますので、最新の情報についてはhttp://www.openssl.org/ を参照して下さい。 日本語訳に関する責任はインフォサイエンス(株)にあります。日本語訳に関する質問、誤訳の指摘などは ssleay@infoscience.co.jp まで御連絡下さい。 翻訳の原文はここ(ミラーサイト)です。 Welcome to the OpenSSL Project OpenSSL Project とは、Secure Sockets Layer (SSL v2/v3) と、世界標準の暗号プロトコルである Transport Layer Security (TLS v1) を実装した、強固で商用に耐えうる、高機能な Open Source のツールキットを共同開発するものです。プロジェクトは Ope
Welcome to OpenSSL! The OpenSSL Project develops and maintains the OpenSSL software - a robust, commercial-grade, full-featured toolkit for general-purpose cryptography and secure communication. The project’s technical decision making is managed by the OpenSSL Technical Committee (OTC) and the project governance is managed by the OpenSSL Management Committee (OMC). The project operates under forma
Winsock Error Code エラー番号順 ・以下の英語の個所は WinSock Development Information のページの内容を使わせていただきました。m(_ _)m ・日本語の個所は - WinSock 1.1/2.0 Reference on Web -のページの内容を使わせていただいたのですが、年月を経て消滅してしまったようです(Wayback Machineのアーカイブ)。 ・Microsoftは Windows Sockets Error Codes のページで情報提供してます。 ・エラー番号を赤字で表示したものは、過去に AN HTTPD ゲストブック/コメント集に登場(errors.logに記録される)したことがあります。
このページは、Winsock Programmer's FAQ の日本語訳です。この FAQ の原文はWarren Young 氏によるもので、Winsock Programmer's FAQのサイトで公開されているものです。このページで公開してい る日本語訳は、同氏の許可を得て、私(Keisuke MORI)が翻訳、公開して います。この FAQ のオリジナルの歴史や著者については、序文 の章を参照して下さい。 現時点では、まだ全部の章の翻訳は完了していません。未訳の章は 原文のままで残っていますのでご了承ください(実はこの翻訳は、かな り以前から着手していたのですが、どうも遅々として進まないので:-) まずはできたところから公開することにしました)。 なお、この日本語訳FAQは、常に最新であるという保証はできません ので、最新の情報については適宜オリジナルのFAQを参照してくださる よ
ここでは、WinSockを使ったWindowsネットワークプログラミングの説明を行いたいと思います。 ここで対象としている読者は、ネットワークプログラミング初心者(もしくは入門者)かつWindows環境でプログラミングを行いたい人です。 WinSockという名称は、Windows Socketsから来ています。 名前の通り、Winsockはウィンドウズでソケットを使ってプログラムを書くためのAPI(Application Program Interface)です。 Winsockを使うと、TCP/IPなどインターネットを使って通信を行うプログラムが書けます。 ここで説明を行うwinsockのバージョンは2.0です。 ただし、大枠に関してはversion 1.0と2.0で同じ部分もあるので1.0を利用する方でも参考にはなると思います。 Winsockが対応するWindowsのバージョンとして
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く