こける Wired-Winsockを使ってみようぜ '99/01/24
Winsockを使ってみようぜ

皆さんはDelphiを使ってどんなプログラムを組んでますか?
データベースエンジンBDEや、充実したデータベース系コンポーネントから考えると、データベースアプリケーションってのが多いのかな。それとも、ゲームかな。
データベースソフトでも、本格的なC/Sシステムを作る人も多いのでしょうが、C/S版は高いし、そんなに強力なのは要らないけど、ネットワークで使いたいって人も多いんじゃないかな。
自分で簡単な独自プロトコル作ってクライアントとサーバーをLANで結び、サーバはローカルベータベースってので十分って事は無いですか?
ゲームならネット対応のゲームとか組みたくないかな。 と思って、ネットワークを扱うプログラムを作ろうとすると、DelphiのISPにあるTCPコンポーネントを使うのが楽なんだけど...
あれって配布が面倒だよね。レジストリ触らないといけないし、ocxファイルは同梱しないといけないし。
もともとDelphiはwinsockを直たたきできるんだから、直接たたけばそんなの要らない。
必要なのは自分の.exeだけ。wsock32.dllは、NTでも95でも標準で付いている。
まぁ、Program FilesのKTcpコンポーネントを使ってもらってもいいんですが。(^^
#Delphi3.1ではPro版からWinsockコンポーネントがつくそうだしなぁ。

「自分で作れる」ぐらいの知識があったほうがいいでしょ?
それに、KTcpコンポーネントを使うにしても知っておいた方が良い知識ってのもあるし。

というわけで、「winsockを使って見ようぜ」のページを始めてみました。
今のところ考えているのは、KTcpと同じ「非同期TCP」を使えるようになるとこまで。
さてどのくらいで連載が完了するものやら。(^^;;
取りあえず、Delphi自体はある程度使えるし、ポインタってのもメッセージってのも大体判る、けどwinsockってのは使ったことがないって人を対象にします。
すみませんが、ポインタって何?とかメッセージって何?ってのは、Delphi入門をやってるページで調べてきてね。
また、Delphi2/3を対象にします。Delphi1の人も参考になると思いますが、配慮しません。m(__)m

この連載で作成したサンプルのコンポーネントをDelphi4に対応しました。
[Delphi4対応サンプルコンポーネント]


目次

  1. Winsockの基礎知識
    IPアドレスとかポートとかの説明
  2. Winsockの素性は?
    WSAStartUpとWSACleanup,gethostname
  3. 住所と氏名
    inet_addr,inet_ntoaとgethostbyname,gethostbyaddr
  4. お話ししましょ
    connectとrecv,send,socket,closesocket
  5. よくあるエラー
    WSAGetLastErrorとWSANO_DATA,WSAETIMEOUT等
  6. Windowが固まっちゃうなぁ
    AllocateHWnd,DeallocateHWnd,DefWindowProc
  7. 固まらない住所調べ
    WSAGetHostByName,WSAGetHostByAddr,WSACancelAsyncRequest,WSAGetAsyncError
  8. 固まらない通信
    WSAAsyncSelect,WSAGetSelectEvent,WSAGetSelectError,WSAMakeSelectReply
  9. 待ち人来たる (サーバ編)
    bind,listen,accept
  10. 千客万来 (サーバ編)
    複数の接続管理

[表紙] [Program Files] [オブジェクト指向異聞] [プログラム未整理知識] [Winsockを使ってみようぜ] [だべり] [What's New] [書いた奴] [リンク] 秘密