Winsockメモ
以下にWinsockでの接続方法を記述します。
TCPの接続方法は以下のとおり。
・クライアント
- WSAStartup関数でWinsockを初期化する。
- socket関数でソケットを作成する。
- gethostbyname関数かgethostbyaddr関数でサーバーを探す。
- connect関数でサーバーに接続。(識別情報を一度だけここで確認)
- send関数でデータを送信、recv関数でデータを受信する。
- 終了するときには、shutdown関数とclosesocket関数でソケットを閉じる。
- WSACleanup関数でWinsockを解放する。
・サーバー
- WSAStartup関数でWinsockを初期化する。
- socket関数でソケットを作成する。
- bind関数でソケットに名前をつける。
- listen関数とaccept関数でクライアントに接続を受け入れる。(識別情報を一度だけここで確認)
- send関数でデータを送信、recv関数でデータを受信する。
- 終了するときには、shutdown関数とclosesocket関数ですべてのソケットを閉じる。
- WSACleanup関数でWinsockを解放する。
次にUDPの接続方法は以下のとおり。
・クライアント
- WSAStartup関数でWinsockを初期化する。
- socket関数でソケットを作成する。
- gethostbyname関数かgethostbyaddr関数でサーバーを探す。
- sendto関数でデータを送信、recvfrom関数でデータを受信する。(データ転送をするたびに、識別情報を確認する)
- 終了するときには、shutdown関数とclosesocket関数でソケットを閉じる。
- WSACleanup関数でWinsockを解放する。
・サーバー
- WSAStartup関数でWinsockを初期化する。
- socket関数でソケットを作成する。
- bind関数でソケットに名前をつける。
- sendto関数でデータを送信、recvfrom関数でデータを受信する。(データ転送をするたびに、識別情報を確認する)
- 終了するときには、shutdown関数とclosesocket関数ですべてのソケットを閉じる。
- WSACleanup関数でWinsockを解放する。
基本的にクライアントはサーバーを探すところまで一緒で、サーバーはソケットに名前をつけるところまでは一緒なんですね。それでTCPとUDPで識別方法が違うという感じですね。終了処理も同じですね。