Winsockメモ

 接続にはTCPUDPが存在する。

  • TCPは接続型アプリケーションで、一般的にメールやファイル転送に使われる。
  • UDPは非接続型アプリケーションで、少量のデータを転送するアプリケーションに使われる。

以下にWinsockでの接続方法を記述します。
 TCPの接続方法は以下のとおり。

クライアント

  1. WSAStartup関数でWinsockを初期化する。
  2. socket関数でソケットを作成する。
  3. gethostbyname関数かgethostbyaddr関数でサーバーを探す。
  4. connect関数でサーバーに接続。(識別情報を一度だけここで確認
  5. send関数でデータを送信、recv関数でデータを受信する。
  6. 終了するときには、shutdown関数とclosesocket関数でソケットを閉じる。
  7. WSACleanup関数でWinsockを解放する。

サーバー

  1. WSAStartup関数でWinsockを初期化する。
  2. socket関数でソケットを作成する。
  3. bind関数でソケットに名前をつける。
  4. listen関数とaccept関数でクライアントに接続を受け入れる。(識別情報を一度だけここで確認
  5. send関数でデータを送信、recv関数でデータを受信する。
  6. 終了するときには、shutdown関数とclosesocket関数ですべてのソケットを閉じる。
  7. WSACleanup関数でWinsockを解放する。

 次にUDPの接続方法は以下のとおり。

クライアント

  1. WSAStartup関数でWinsockを初期化する。
  2. socket関数でソケットを作成する。
  3. gethostbyname関数かgethostbyaddr関数でサーバーを探す。
  4. sendto関数でデータを送信、recvfrom関数でデータを受信する。(データ転送をするたびに、識別情報を確認する
  5. 終了するときには、shutdown関数とclosesocket関数でソケットを閉じる。
  6. WSACleanup関数でWinsockを解放する。

サーバー

  1. WSAStartup関数でWinsockを初期化する。
  2. socket関数でソケットを作成する。
  3. bind関数でソケットに名前をつける。
  4. sendto関数でデータを送信、recvfrom関数でデータを受信する。(データ転送をするたびに、識別情報を確認する
  5. 終了するときには、shutdown関数とclosesocket関数ですべてのソケットを閉じる。
  6. WSACleanup関数でWinsockを解放する。

 基本的にクライアントはサーバーを探すところまで一緒で、サーバーはソケットに名前をつけるところまでは一緒なんですね。それでTCPUDPで識別方法が違うという感じですね。終了処理も同じですね。