新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:linux-programing:network-programing:msys2-winsock-network-programing


差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
programing:linux-programing:network-programing:msys2-winsock-network-programing [2021/07/15 21:07] – [msys2でのソケットライブラリー] yokoprograming:linux-programing:network-programing:msys2-winsock-network-programing [2021/07/16 20:34] (現在) yoko
行 1: 行 1:
-Windows】msys2ネットワークプログラミング(Winsock+【msys2】Windowsネットワークプログラミング(winsock
 ===================================== =====================================
-「[[programing/linux-programing/network-programing/linux-network-programing]]」記事で、Linux標準ソケットによる簡単なTCP通信のサンプルプログラムを動かした。このプログラムをWindows上でも動かせるようにしたので備忘録を残す。+「[[programing:linux-programing:network-programing:linux-socket-network-programing]]」記事で、Linux標準ソケットによる簡単なTCP通信のサンプルプログラムを動かした。このプログラムをWindows上でも動かせるようにしたので備忘録を残す。
  
 msys2でのソケットライブラリー msys2でのソケットライブラリー
行 7: 行 7:
 [[software/msys2/start]]でも `#include <sys/socket.h>` などのLinux標準ソケット関数がそのまま利用できれば良いのだが、どうも使えない模様。 [[software/msys2/start]]でも `#include <sys/socket.h>` などのLinux標準ソケット関数がそのまま利用できれば良いのだが、どうも使えない模様。
  
-そこで、`#include <winsock2.h>` ヘッダーを指定しwinsock2ライブラリーを使う。winsock2ライブラリーは、Linux標準ソケット関数とかなり似ているが少し違うので修正が必要。   +そこで、`#include <winsock2.h>` ヘッダーを指定しwinsock2ライブラリーを使う。winsock2ライブラリーは、Linux標準ソケット関数とかなり似ているが少し違う。   
-尚、winsock2ライブラリーは32bit版だけのようで、msys2のMINGW32環境で32bitアプリとしてコンパイルを行う。Windowsの64bitパソコンでも、32bitアプリの実行は可能。+winsock2ライブラリーは32bit版だけのようで、msys2のMINGW32環境で32bitアプリとしてコンパイルを行う。Windowsの64bitパソコンでも、32bitアプリの実行は可能。
  
  
 TCPソケット通信サンプルプログラム TCPソケット通信サンプルプログラム
 ----------------------------- -----------------------------
-以下のサンプルプログラムでは、`WINSOCK_USE` の条件コンパイルで、Linux版と兼用できるソースにしている。+以下のサンプルプログラムでは、`WINSOCK_USE` の条件コンパイルで、Linux版と兼用できるソースにしている。
  
 尚、システムコール時のエラー判定やタイムアウト監視など不十分なので、実際に使う場合はエラー処理などもよく吟味して利用する事。 尚、システムコール時のエラー判定やタイムアウト監視など不十分なので、実際に使う場合はエラー処理などもよく吟味して利用する事。
行 43: 行 43:
 main(int argc, char *argv[]) main(int argc, char *argv[])
 { {
 +    int n;
 +    struct sockaddr_in server;
 +    char buf[32];
 #ifdef WINSOCK_USE #ifdef WINSOCK_USE
 +    SOCKET sock;
     WSADATA wsaData;     WSADATA wsaData;
-    SOCKET sock; 
-#else 
-    int sock; 
-#endif 
-    struct sockaddr_in server; 
-    char buf[32]; 
-    int n; 
  
-#ifdef WINSOCK_USE 
     // winsock2の初期化     // winsock2の初期化
     WSAStartup(MAKEWORD(2,0), &wsaData);     WSAStartup(MAKEWORD(2,0), &wsaData);
 +#else
 +    int sock;
 #endif #endif
  
行 194: 行 192:
  
   * コンパイル時に、winsock2のライブラリー(`libws2_32.lib`)を明示的に`-lws2_32`指定しなくてもコンパイルエラーなく実行ファイルを生成した。   * コンパイル時に、winsock2のライブラリー(`libws2_32.lib`)を明示的に`-lws2_32`指定しなくてもコンパイルエラーなく実行ファイルを生成した。
-  * MINGW64シェルの64bitコンパイル環境でも、`-lws2_32`を指定すればコンパイルはできたが、実行時の挙動がどうも怪しかった。+  * MINGW64シェルの64bitコンパイル環境でも、`-lws2_32`を指定すればコンパイルは通ったが、実行時の挙動がどうも怪しかった。
  
 関連記事 関連記事
 ------- -------
  
-  * [[programing/linux-programing/network-programing/linux-network-programing]]+  * [[programing:linux-programing:network-programing:linux-socket-network-programing]]
   * [[software/msys2/msys2-ldd-dllcheck]]   * [[software/msys2/msys2-ldd-dllcheck]]
  
行 209: 行 207:
 2. [[https://qiita.com/UchiwaFuujinn/items/c376d8bfbbf0690ba13a?utm_source=pocket_mylist|Windows Console でUDPの送受信]] 2. [[https://qiita.com/UchiwaFuujinn/items/c376d8bfbbf0690ba13a?utm_source=pocket_mylist|Windows Console でUDPの送受信]]
 3. [[https://hayabusa333.hatenadiary.org/entry/20110329/1301358227?utm_source=pocket_mylist|MinGWにてSocket通信を行うには]] 3. [[https://hayabusa333.hatenadiary.org/entry/20110329/1301358227?utm_source=pocket_mylist|MinGWにてSocket通信を行うには]]
 +
  
  
  
programing/linux-programing/network-programing/msys2-winsock-network-programing.1626350825.txt.gz · 最終更新: 2021/07/15 21:07 by yoko