Internet Programming
基礎
[1997/11/26]
■初めに
WindowsでWinSockを利用したインターネットプログラムの作成方法を解説するページです。
C言語使って解説しますが、C言語の基本的な説明はいたしません。
TCP/IPについても詳しく触れません。
ここでは、WinSockを利用するにあたって最低限必要だと思われるものを解説します。
■WinSockとは...
WinSockとは、Socket Interfaceを利用して通信を行うWindows用のライブラリです。
要は、インターネットで通信を行うときに使うAPIの集まりです。
もともとUNIXの世界のものでしたが、MicrosoftがWindowsで使用するために拡張したものです。
WinSockでは、ソケットと呼ばれる通信の端点に対して、アプリケーションがAPIを呼び出すことにより通信を行うことができます。
ソケットは、TCPとUDPなどのプロトコルで使用します。
■サーバとクライアント
サーバとは、サービス(機能)を提供するプログラムのことです。
例えば、HTTPサーバやFTPサーバなどです。
クライアントとは、サービス(機能)を受けるプログラムのことです。
例えば、WebブラウザやFTPクライアントなどです。
■TCPとUDP
WinSockでは、TCPとUDPの2通りの通信方法を選択できます。
TCPは、コネクション型やストリーム型と呼ばれ、サーバとクライアントの1対1で接続して通信を行います。
アプリケーションは届いたデータの順序やデータが壊れていないかなどの心配は必要ありません。
信頼性が高い通信方法です。
UDPは、コネクションレス型やデータグラム型と呼ばれ、指定のIPアドレスとポート番号で直接データ送受信を行います。
複数のマシンなどに同時にデータを送信することなどができます。
アプリケーションが届いたデータの順序を揃えたり、データが壊れていないかチェックする必要があります。
信頼性より通信速度を優先する場合に使えます。
■ホスト名とIPアドレスとポート番号
インターネットで通信を行うときは、サーバにもクライアントにもIPアドレスが必要です。
IPアドレスとは、32bitの整数で表してマシンを特定するもの(IPv4)です。
普段使う場合は、4オクテットを1オクテットずつドットで区切って表します。
例えば、123.123.123.123 のような感じです。
しかし、IPアドレスでは覚えにくいので、ホスト名があります。
ホスト名とは、マシンに付けられる名前です。
例えばWebサーバなら www.hogehoge.comのような感じです。
実際に通信を行う場合はIPアドレスで行うので、ホスト名をIPアドレスに変換する必要があります。
ポート番号は、一つのマシンで複数のサーバを起動している場合などに、どのサーバに接続するかを指定する番号です。
■同期型と非同期型
WinSockには、同期型のAPIと非同期型のAPIが用意されています。
同期型(基本API)は、UNIXのソケット ライブラリとの互換性があります。
しかし、処理を占有するので、GUIを使ったアプリケーションの場合は、マルチスレッドなどを使って、処理が停止しないようにする必要があります。
例えば、データ受信処理は受信が完了するまで処理を抜けません。
非同期型(拡張API)は、GUIで処理が停止しないようにソケットライブラリをMicrosoftが拡張したものです。
データ受信などがウィンドウメッセージとして通知されるため、メッセージが通知されるまで他のウィンドウメッセージを処理することができます。
同期型のAPIと組み合わせて使います。
メールアドレス
<nakka@nakka.com>
Internet Programming