ウィンドウズのVisual C++などマイクロソフト製プログラミング言語を使ってネットワーク通信プログラミングをするには、Winsockをインクルードしなければならない。
なお、Winsockを使うにも、原則として Visual Studio が必要である。
まず、2020年の時点で、下記のような仕様である（実機で確認）（※ ネットにあるサイトの情報が古いので（2001年くらいのとか平気である）、2020年代の現代では実機で確認の必要がある。）。
2020年代でも、 Visual Studio でWinSockプログラミングを開発できる。
まず、Visual Studio で立ち上げるコード種類を選ぶ際には、Visual Studio の普通のC言語用のコンソールアプリケーションでよい。つまり、よく学校教育とかのC言語の授業の Hello World とかの入門で使う、普通のアレでいい。
ネット上にはMinGWでWinSockコードをコンパイルした事例なども紹介されているが、たとえば
 g++ -lwsock32 ファイル名.cpp -lws2_32
などのコマンドが各所のサイトに紹介されているが、しかし2020年現在、IPv6 関連の関数の一種である inet_pton() や inet_ntopなど新しい関数がMinGWは対応しておらず、そのため、それらの関数を用いているコードの場合、Visual Studio コンパイルできたコードがMingWではコンパイルできない。
ちなみに、上記のg++コマンドではリンクオプションの-lを用いており、 「-lwsock32」とは「ライブラリ libwsock32 をリンクせよ」という意味。
また、コマンドラインでの -lws2_32 の位置には意味があり、コマンドラインの末尾のリンクするライブラリの指定
ソケット通信は、Windowsに限らずUnixなどでも一般に、通信の工程が下記のように分類されます。
WSAなんとかという用語は Winsock だけの用語ですが、それ以外のbindやsendなどの用語は、Unixソケット通信でも共通です。
Winsockプログラムでの典型的な基本骨格は、下記のようになります。
int main(){
	WSADATA wsaData;
	WSAStartup(2, &wsaData);
	WSACleanup();
	return 0;
}
これだけだと、単にWinsockを起動するだけなので、何も通信しないし表示しません。
このコードをもとに、これからコードをどんどん追加していって、必要なコードを加えていくことになります。
さて、Winsockでは、API関数がいくつか提供されている。
たとえば、WSAStartup は、WinSockの初期化のための関数であり、この関数の使い方も既に決まっている。⇒ [https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsastartup WSAStartup function (winsock.h)]
なお、WSAStartup関数で必要な設定を初期化するために、事前にWSADATA 型 の変数のセットアップが必要である。
WSAStartup の1番目の変数の内容は、使用するWinsockのバージョンの指定です。とりあえず「2」を入れておけば、問題ありません（実機で確認ずみ）。
WSAStartup の2番目の変数の内容は、この処理内容を入れるためのWSADATA型変数の指定です。
なのでイメージ的には、まず
WSADATA data;
WSAStartup(バージョン指定,&data)
のように宣言をすることになる。
関数 WSACleanupは、WinSockを終了させるAPI関数です。
さて、Winsockのコードは、どのコードでも、まず、
のようにコードの冒頭で winsock2.h をインクルードする記述が必要になる。もう何年も前からwinsockのバージョンが 2.x なので、2020年代でも引き続き、インクルードするのは winsock2.h で良い。なお、2020年の現時点では、Winsockは普通はバージョン2.2である（実機で確認ずみ）。
また、ライブラリ 「ws2_32.lib」も必要なので、下記のように pragma 演算子でライブラリ導入する必要がある。このライブラリを導入しないと（つまり下記のpragma文が無いと）、コンパイルしようとしてビルドボタンを押してもエラーになる。
結局、
のように冒頭で宣言することになる（ひとまず、コレだけでも動作が可能である）。
たとえば外部リンクの[http://wisdom.sakura.ne.jp/system/winapi/winsock/winSock2.html ウィズダムソフト]のコード例も、この冒頭の宣言を加えるだけで2020年代でも動作する（実機で確認ずみ）。
なお、2020年の現時点でも、Winsockはバージョン2.2であるので、インクルードするのは  で良い。
なお、最終的にサーバ側のプログラムでも、クライアント側のプログラムでも、それぞれ  をインクルードすることになる。