1. ホーム
  2. c

[解決済み] Windowsでsys/socket.hの関数を使用する場合

2022-03-12 11:58:39

質問

Windowsでsocket.hの関数を利用しようとしています。基本的に、私は現在、以下のサンプルコードを見ています。 https://beej.us/guide/bgnet/html/multi/clientserver.html#datagram . socket.hがUnixの関数であることは理解していますが、このサンプルコードをコンパイルする際に、その環境を簡単にエミュレートする方法はないでしょうか?IDEやコンパイラが違うだけで、何か変わるのでしょうか?

そうでなければ、仮想化されたLinux環境を利用する必要があると思いますが、コードがUNIX環境で実行される可能性が高いので、いずれにしてもベストかもしれません。

ありがとうございます。

解決方法は?

2つの選択肢があります。

  1. 使用する Cygwin (Unixエミュレーションライブラリ)。
  2. への移植 ウィンソック (Windows標準ライブラリ)を使用します。

Cygwin: Unixのソースをほとんどそのままコンパイルできますが、Cygwinのエミュレーション・ライブラリに縛られます。これは2つの意味を持ちます。一般的なパフォーマンス(ネットワークのみなし)は、おそらく最適とは言えないでしょう。

Winsock:これは、あなたが sys/socket.h (BSD ソケットライブラリ、TCP/IP スタックの UNIX 標準) を winsock2.h そして、コードの一部を書き換えてください。

関連する質問で貴重な情報があります。

winsock と BSD ソケット実装の違い

Cygwin[Windows版Linux]の問題点 (ソケット、スレッド、その他のプログラミングとシェルの問題)

Winsockの例?