サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
www.kt.rim.or.jp/~ksk
Previous Next Table of Contents 1. 一般的な情報と概念 1.1 更新情報 1998 年 5 月 21 日に変更されました。 2.12. ソケットプログラミングのためのライブラリはどこから 入手できますか? (リンクをいくつか修正) 7. サンプルソースコード (例を新しい ftp サーバに置いた) 1.2 この FAQ について この FAQ は Andrew Gierth 氏 ( [email protected]) の多大なる助力のもと、Vic Metcalfe ( [email protected]) によって維持されています。私は本物のウイザード達に頼りながら詳細 な部分を補填し、私の(疑いなく)たくさんの間違いを修正してもらって います。この FAQ のプログラム例は、流れを追い、理解をし易くする ために書かれました。これをその分だけ有
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
ザ・間違いリスト はじめに 「ザ・間違いリスト」(The Lame List)は、非常に有用なものであ るので、ここに再掲することにします。この文章は、Windows Sockets 2 アプリケーションプログラミングインターフェースバー ジョン 2.2.2 の付録C から直接カット&ペーストしたものです。このリ ストはもともと、Winsock スタックベンダ達が、お馬鹿なアプリケーショ ンの数々(名前を出すことは控えておきます)について文句を並べたもの が始まりです。にも関わらずこれらの内容は非常に有用なものです。と いうのは、新米の Winsock 屋さんは、やはり同じお馬鹿な間違いをし でかしてしまうからです。このリストに載っている内容を避けるように することが、あなたを Winsock の超プロに向かう長い道へと導くので す。 このリストのもともとのはしがき: このリストを始めた功
The Cygwin Project FAQ 20.2 for Release B20.1. (Japanese) これは何ですか? Cygwin ツールは、広く普及している GNU の開発ツールを、Windows NT, 95, 98 用に移植したものです。これらのプログラムは、それらが 必要としている UNIX システムコールや環境を提供する Cygwin ライブ ラリによって動作します。 これらのツールをインストールすることによって、標準 Microsoft Win32 APIおよび Cygwin API を使っての Win32 コンソールアプリケー ション、または GUI アプリケーションの作成が可能になりました。こ の結果、たくさんの重要な UNIX プログラムを、大規模なソースコード の修正をすることなく容易に移植することが可能になります。これはほ とんどの GNU ソフトウエ
Winsock Programmer's FAQ 第7章: 論説記事: CSocket はなぜ有害か? CSocket はなぜ有害か? Warren Young 著 もしあなたが MFC ユーザであるなら、おそらく MFC ライブラリの CAsyncSocket クラスやその仲間を使うことを考えているでしょう。し かし残念ながら、その階層構造全体に問題がある、ということを、プロ グラムを書き始める前に知っておくべきでしょう。 CAsyncSocket CAsyncSocket は非同期ソケットのラッパーの骨組みです。この FAQ では現在、二つの例、「直API版」 と 「CAsyncSocket ベース版」 クライアントを示しています。 これらの例をダウンロードして眺めてみると、CAsyncSocket 版はあ まりきれいではなく、いくつか問題があることに気が付くでしょう。ま ず一番目に、
このサンプルでは、自分のマシンのIPアドレスを取得する方法を示 しています。はい、ここでの「IPアドレス」は複数形です。本来全ての TCP/IP マシンは少なくとも二つのIPアドレスを持っています。すなわ ち、ループバックインターフェース(127.0.0.1)と、一つ以上の「普通 の」ネットワークインターフェースです。ループバックインターフェー スによって、同一のマシン上で二つのプログラムが、ハードウェアドラ イバを経由せずにお互いにお話できるようになります。 それに加えて、多くのマシンでは一つ以上の「普通の」ネットワー クインターフェースを持っています。例えば私の自宅のマシンでは、イー サネットのネットワークボードにIPアドレスが一個と、ISPに接続した ときのモデム用に一個持っています。 doit()関数の下のほうにあるループによって、全ての インターフェースを確実にリストアップしてい
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 5. UDP/SOCK_DGRAM アプリケーションの作成 5.1 どんな時に TCP ではなく UDP を使うべきなのでしょうか? UDP は、あるシステムから別のシステムにメッセージを送るのに、順序 は重要ではなく、全てのメッセージが他方のマシンに届く必要がないと いう時には有効です。ですから、私は UDP を、この FAQ のコード例を 書く時にしか使ったことがないのです。普通は TCP がより良い解決法 です。メッセージが望みの目的地に届くことの保証や、メッセージ順序 を保証させるためのコードを書かなくても済みます。あるプロジェクト にあなたが追加したコードというものには全て、非常に高価なバグが潜 んでいる可能性があるということを憶えておきましょう。 もし TCP があなたの要求に対してあまりにも遅すぎるのであれば、メ
Previous Next Table of Contents 4. サーバアプリケーションの作成 (TCP/SOCK_STREAM) 4.1 bind() から「アドレス使用中 "address already in use"」が返されるのはどうしてですか? それは、そのアドレスが使用中だからです(え? それはもうよく分かっ てるって?)。これが起こる最もありがちな理由は、サーバをストップし て、その直後に再起動したときです。最初のサーバの実体によって使わ れていたソケットがまだ有効なのです。これについては、 2.7 TIME_WAIT 状態について説明してください と 2.5 ソケットを正しく閉じるにはどうす ればよいのですか? でさらに説明されています。 4.2 どうしてソケットがクローズしてくれないのでしょうか? あなたが close() システムコールを発行したときは、それはソケ
2.1 - ネット上で入手できるサンプルプログラムはありますか? はい。情報源のページにいくつか、ま た、FAQ の サンプルプログラムの章にもさ らにいくつかリストアップされています。まだ Winsock を始めたばかりであれば、 特に こちらの例が有用でしょう。 2.2 - WSAStartup 呼び出しの前に WSAData 構造体を初期化する必要はあるのですか? いいえ、WSAStartup() 自身が必要なデータを埋めてくれます。 2.3 - Winsock プログラムをコンパイルしようとするとリンクエラーが出ちゃいました。何が悪いんでしょう? おそらく、正しい Winsock インポートライブラリをリンクしていないのでしょ う。16bit の Windows システムでは、winsock.lib が正しいライブラリです。 32bit Windows システムで Winsock
[Japanese page] ChangeLog -- What's New Table of Contents Winsock Programmer's FAQ(in Japanese) Japanese version of Winsock Programmer's FAQ. Programming UNIX Socket FAQ Japanese version of Programming UNIX Socket FAQ. Cygwin information Japanese version of FAQ for Cygwin tools, and links(out of dated). Yen2BS font patch Give Backslash to Windows 95 Japanese edition! Other Articles Archeology of "
このサンプルでは、Microsoft の ICML.DLL を使って他のマシンに "ping" する方法を示しています。この DLL は ICMP echo パケットを 送信するための非公式 API です。ICMP echo は "ping" とも呼ばれま すが、これは潜水艦のソナー音から名付けられました。このプログラム は MarkG という方の作った GUI プログラムを基にしていますが、この 人のウェブページは無くなってしまいました。どなたか最近彼がどこに いるかご存知でしたら、彼のページにリンクを張りたいと思っています。 ICMP.DLL API はちゃんと動作しますし、Microsoft の Winsock が 載っている現在のWindows マシン上には全て存在しています。しかし Microsoft は、より良いものが現れれば すぐそれに置き換えると言っています。Microso
Winsock と BSD ソケットとの互換性 Warren Young 著 つまり、君はずっと長い間 UNIX ハッカーで、Windows プログラミ ングについては良く知らないっていうわけだね? そして君の愛しの BSD ソケットと互換性のある Winsock っていうすごい API のことを聞きつ けた。だけど、いくらがんばってみても、君は readv() 呼出しを見つけることさえできなかった、ってわけかい? ちょうどいい ぜ、相棒、この記事は君のためのものだ。 はじめに 始めは混沌がありました。この混沌は Windows TCP/IP API の非互 換性という形を取っていました。つまり、例えば FTP Software TCP/IP スタック用に書かれたプログラムは、JSB のスタック上では動かなかっ たわけです。 そして 1990 年のいつ頃か、何人もの人々が一緒になって、一つ
TCP を有効に使うために Warren Young 著 ネットワークプログラミングの初心者は、はじめの頃にほとんど必 ずと言っていいほど、ネットワークもしくは TCP/IP スタックがデータ を壊しているのではないかと思ってしまう問題に突き当たります。これ は初心者にとってかなり驚くべきことでしょう。TCP とは信頼性のある トランスポートプロトコルである、と教えられているでしょうから。事 実、TCP と Winsock は、正しく使えば全く信頼性があるものです。こ のチュートリアルでは、TCP の使い方を学んでいるときによく出くわす 問題について論じたいと思います。 問題 1: パケットは幻影である この問題はさまざまな形をとって現れます。 「クライアントプログラムは 100 バイト送信してるのに、サーバ プログラムはたった 50 バイトしか受け取らないんだ。」 「僕のクライアントプロ
Cygwin のページ [English page] [Back to Top page] Table of Contents Cygwin FAQ 日本語訳 Wnn の jserver を Cygwin で動かそう! Cygwin 関連サイト Cygwin FAQ 日本語訳 注: このFAQは今となってはもう古すぎて役には立ちません! あ くまで過去の情報として残しているだけですので、参考にはしないでく ださい。 FAQ 20.2 for beta 20.1 (日本語) この FAQ は、texinfo 形式から変換しました。texinfo 形式の FAQ は こちら。 FAQ for beta 19 (日本語) (9/28/98 更新) FAQ for beta 18 (日本語) Wnn の jserver を Cygwin で動かそう! FreeWnn-1.0 の jserver を
TCP/IP のデバッグ Warren Young 著 (この文章は Winsock プログラマを念頭に書いてありますが、ここ での情報は Unix プログラマやネットワーク管理者、技術者に対しても 同様に通用するものです。) TCPは、「データを送る。それを配送する」というだけの、ある意味 単純なプロトコルです。TCPは品質状態が変化するネットワーク上で信 頼性を確保するために開発されたものなので、数多くの問題をエンドユー ザの手を煩わせることなく回避するようになっています。しかし、ある 意味この信頼性のおかげで、TCPはプロトコルを本当に理解していない 人をびっくりさせるような振舞いを示すことがあります。このチュート リアルではそれらの問題の最も重要な部分を紹介していきますが、しか しこれは氷山の一角に過ぎません。水面下に埋もれている部分について は TCP/IP Illustrate
spam 考古学 [Back to Top page] Internet でメールや Netnews を使い出すと、よく "spam" という 言葉を目にするようになります。さて、この "spam" とはどういう意味 の言葉なのでしょう? この文書はその "spam" の語源にまつわる話を集 めたものです。 Table of Contents そもそも spam って何? そもそも spam って何? spam の正式名称は? spam の語源 Netnews 上での初めての spam は? 誰が使い出した言葉なの? さらに歴史を遡ると… SPAM の缶詰について SPAM 缶とは何者 SPAM と spam 参照情報、リンク集 そもそも spam って何? Internet 上で言う "spam" とは、いわゆる「ジャンクメール(ごみ メール)」のことです。あなたの家のポストにも、よく何
Previous Next Table of Contents 2. クライアントとサーバ(TCP/SOCK_STREAM)両方に関する質問 2.1 相手側のソケットが閉じられたことをどうやって知ることができますか? Andrew Gierth 氏 ( [email protected]) より: 私の知る限り… 相手側が (SO_LINGER を使ったややこしいことをしないで) close() するか終了したとすると、こちらの read() の呼び 出しは 0 を返すはずです。同じ場合で、write() 呼び出しで何が 起こるかは、もうちょっとわかりづらいです。直後の呼び出し時ではな く、その次の呼び出し時にEPIPE が返るでしょう。 もし相手が再起動するか l_onoff = 1, l_linger = 0 を設定して から閉じたとすると、read() からは(
Win9x ではオーバーラップ I/Oをカーネルレベルではサポート していません。Win9x 上でオーバーラップI/Oが動作しているのは、 この機能がAPIのレイヤでエミュレートされているからなのです(こ れは、少なくとも Winsock、ファイル、シリアル/パラレルポート の入出力に対して当てはまります)。この意味はつまり、Winsock 仕様で保証される範囲でのオーバーラップ I/O 機能のみを使って いるプログラムは Win9x でも動作しますが、もしたまたま WinNT 4 以降でのみ提供される機能を使ってしまうと、Win9x では動かな くなってしまう、ということです。その一つの例として、ソケット に対して ReadFile()を呼び出す、というのがありま す。これは NT 4以降では問題なく動きますが、Win9x では動きま せん。 単なる分割/集積I/O が必要なだけであれば
3.1 - Winsock において { HTTP, POP3, SMTP, FTP, Telnet, NNTP, など} はどうやって喋れば良いの? Winsock 自身はこれらのプロトコルを話すための方法は提供してい ません。というのも Winsock はこれらアプリケーションレベルプロト コルのより下層を取り扱うものだからです。しかし、あなたのプログラ ムにこれらのプロトコルを話させる方法はたくさん存在します。 最も簡単な方法は、サードパーティのライブラリを使う方法です。リソースの章 にてこれらのいく つかを紹介しています。 もし HTTP、FTP、gopher プロトコルさえ使えればよいのであれば、 Microsoft Internet Explorer から提供されている WinInet ライブラ リを使用することができます。新し目のバージョンの Microsoft の開 発ツー
Programming UNIX Socket FAQ (日本語訳) [English page] [Back to Top page] Programming UNIX Socket FAQ (日本語訳) ここには、UNIX ソケットプログラミングにおける FAQ (よくある質問 と解答集) の日本語訳が置いてあります。この FAQ のオリジナルは、 ニュースグループ comp.answers, comp.unix.answers, comp.unix.programmer に毎月投稿されており、また Web 上では http://www.ibrado.com/sock-faq/ にて公開されているものです。 HTML 形式の FAQ (文字コード: ISO-2022-JP) SGML 形式の FAQ (文字コード: EUC-Japan (UNIX)) この FAQ は SGML 形式が
[English page] ChangeLog -- What's New お品書き あまりにも長い間更新していなかったので、古い物を整理中です…。 Winsock Programmer's FAQ (日本語版) Winsock Programmer's FAQ の日本語訳。 Programming UNIX Socket FAQ (日本語版) UNIX ソケットプログラミング FAQ の日本語訳。 Cygwin のページ Cygwin FAQ の日本語訳(古いものです)。 Yen2BS フォントパッチ 日本語版 Windows 95 でもバックスラッシュを出そう! spam 考古学 spam とは何? spam の謎に迫る! ジョークRFC ジョークRFCをいくつか翻訳しています。 古くなったゴミ 昔持ってたピンボールマシン (eBay! にオークションに出したときのページ) priv
このページは、Winsock Programmer's FAQ の日本語訳です。この FAQ の原文はWarren Young 氏によるもので、Winsock Programmer's FAQのサイトで公開されているものです。このページで公開してい る日本語訳は、同氏の許可を得て、私(Keisuke MORI)が翻訳、公開して います。この FAQ のオリジナルの歴史や著者については、序文 の章を参照して下さい。 現時点では、まだ全部の章の翻訳は完了していません。未訳の章は 原文のままで残っていますのでご了承ください(実はこの翻訳は、かな り以前から着手していたのですが、どうも遅々として進まないので:-) まずはできたところから公開することにしました)。 なお、この日本語訳FAQは、常に最新であるという保証はできません ので、最新の情報については適宜オリジナルのFAQを参照してくださる よ
Created by Vic Metcalfe, Andrew Gierth and other contributers (Transrated into Japanese by: Keisuke Mori)May 21, 1998 この文書は、UNIX 上での ソケットインターフェースを用いた TCP/IP アプリケーションプログラミングについて、頻繁に行われる質問とその 解答を集めたものです。 1. 一般的な情報と概念 1.1 更新情報 1.2 この FAQ について 1.3 この FAQ はどのような人向けでしょうか? 1.4 ソケットって何ですか? 1.5 ソケットはどのように動作するのでしょうか? 1.6 [ある本の題名] という本のソースコードはどこから取得できますか? 1.7 どこでもっと情報を得ることができますか? 2. クライアントとサーバ(TCP/SOCK_STREA
このページを最初にブックマークしてみませんか?
『KSK's Web Page』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く