Windowsでソケットデモプログラム

セクションで実証  Linuxは  下の  ソケット  プログラムは、このセクションでは、Windowsの下でソケットプログラムを見てください。同様に、サーバー側のコード、クライアントコードへのクライアントのためにserver.cpp。

サーバー側のコードserver.cpp:

 
  1. 書式#include <stdio.hに>
  2. 書式#include <winsock2.h>
  3. #pragmaコメント(libに、 "WS2_32.LIB")//ロードWS2_32.DLL
  4.  
  5. {int型のmain()
  6. //初期化DLL
  7. WSADATA WSADATA;
  8. WSAStartupの(MAKEWORD(2,2)、およびWSADATA)。
  9.  
  10. //ソケットを作成します。
  11. SOCKET servSock =ソケット(PF_INET、SOCK_STREAM、IPPROTO_TCP)。
  12.  
  13. //ソケットをバインド
  14. sockaddr_in SOCKADDR;
  15. memset(&SOCKADDR、0、はsizeof(SOCKADDR)); //各バイトは0で満たされています
  16. sockAddr.sin_family = PF_INET; // IPv4アドレスを使用します
  17. sockAddr.sin_addr.s_addr =のinet_addr( "127.0.0.1");特定の// IPアドレス
  18. sockAddr.sin_port = htons(1234); //ポート
  19. バインド(servSock、(SOCKADDR *)&SOCKADDR、はsizeof(SOCKADDR));
  20.  
  21. //リスニング状態に入ります
  22. 聞く(servSock、20);
  23.  
  24. クライアントの要求を受けました@
  25. SOCKADDR clntAddr;
  26. INT nsizeの場合=はsizeof(SOCKADDR)。
  27. SOCKETのclntSock =受け入れる(servSock、(SOCKADDR *)&clntAddr、&nsizeの場合)。
  28.  
  29. //クライアントにデータを送信します
  30. char * strの= "Hello Worldの!"。
  31. 送信(clntSock、STR、strlenを(STR)+はsizeof(文字)、NULL);
  32.  
  33. //ソケットを閉じます
  34. closesocket(clntSock)。
  35. closesocket(servSock)。
  36.  
  37. // DLLの使用を終了
  38. WSACleanup();
  39.  
  40. 0を返します。
  41. }


クライアントコードclient.cpp:

 
  1. 書式#include <stdio.hに>
  2. 書式#include <stdlib.h>に含ま
  3. 書式#include <WinSock2.h>
  4. #pragmaコメント(libに、 "WS2_32.LIB")//ロードWS2_32.DLL
  5.  
  6. {int型のmain()
  7. //初期化DLL
  8. WSADATA WSADATA;
  9. WSAStartupの(MAKEWORD(2,2)、およびWSADATA)。
  10.  
  11. //ソケットを作成します。
  12. SOCKETソックス=ソケット(PF_INET、SOCK_STREAM、IPPROTO_TCP)。
  13.  
  14. //サーバーへの要求を開始
  15. sockaddr_in SOCKADDR;
  16. memset(&SOCKADDR、0、はsizeof(SOCKADDR)); //各バイトは0で満たされています
  17. sockAddr.sin_family = PF_INET。
  18. sockAddr.sin_addr.s_addr =のinet_addr( "127.0.0.1")。
  19. sockAddr.sin_port = htons(1234)。
  20. 接続(靴下、(SOCKADDR *)&SOCKADDR、はsizeof(SOCKADDR));
  21.  
  22. //サーバーは、返されたデータを受け取り、
  23. チャーszBuffer [MAXBYTE] = {0}。
  24. RECV(靴下、szBuffer、MAXBYTE、NULL);
  25.  
  26. //出力データを受信します
  27. printf( "メッセージフォームサーバー:%Sの\ n"、szBuffer)。
  28.  
  29. //ソケットを閉じます
  30. closesocket(靴下)
  31.  
  32. // DLLの使用を終了
  33. WSACleanup();
  34.  
  35. システム(「一時停止」)。
  36. 0を返します。
  37. }


:server.cppとclient.cppが出力され、その後、クライアント。を実行し、SERVER.EXEを実行し、SERVER.EXEとクライアント。用にコンパイルされた
メッセージサーバのフォームのHello World :!

ソケットプログラム、WindowsとLinuxのアイデアの下で同じですが、詳細はいくつかの違いされている:
1)WindowsでソケットプログラムはのWinsock.dllまたはWS2_32.DLLを依存しているが、事前にロードされなければなりません。DLLをロードするための2つの方法があり、参照してください。ダイナミックリンクライブラリDLLのロード

2)Windowsは、「ファイルハンドル」という概念を使用しながら、Linuxは、「ファイルディスクリプタ」の概念を使用して、Linuxは通常のファイルとソケットファイルを区別せず、Windowsが区別; Linuxのソケットの下に()関数は、int型の値を返し、ハンドルで、次のWindowsソケットタイプ、のために。

3)(RECVを使用して読み書きする()/ライト()関数を読み出し、送受信機能次のLinuxを使用して)/ Windowsで)(送ります。

4)Windowsがclosesocket()関数を使用しながら、Linuxは、クローズ()関数を使用して、ソケットを閉じました。

おすすめ

転載: blog.csdn.net/Qsir/article/details/93738790