Internet Programming

基礎

[1997/11/26]

■初めに

WindowsでWinSockを利用したインターネットプログラムの作成方法を解説するページです。
C言語使って解説しますが、C言語の基本的な説明はいたしません。
TCP/IPについても詳しく触れません。
ここでは、WinSockを利用するにあたって最低限必要だと思われるものを解説します。


■WinSockとは...

WinSockとは、Socket Interfaceを利用して通信を行うWindows用のライブラリです。
要は、インターネットで通信を行うときに使うAPIの集まりです。
もともとUNIXの世界のものでしたが、MicrosoftがWindowsで使用するために拡張したものです。
WinSockでは、ソケットと呼ばれる通信の端点に対して、アプリケーションがAPIを呼び出すことにより通信を行うことができます。
ソケットは、TCPUDPなどのプロトコルで使用します。


■サーバとクライアント

サーバとは、サービス(機能)を提供するプログラムのことです。
例えば、HTTPサーバやFTPサーバなどです。

クライアントとは、サービス(機能)を受けるプログラムのことです。
例えば、WebブラウザやFTPクライアントなどです。


■TCPとUDP

WinSockでは、TCPUDPの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と組み合わせて使います。




mail
メールアドレス
<nakka@nakka.com>


Internet Programming
Internet Programming