1

Winsock は Windows OS のネットワークに使用され、BSD は Mac OS と Unix に使用されることを理解しています。上記の 3 つのオペレーティング システムのいずれかで動作する「ユニバーサル」ソケットのタイプはありますか? それとも、異なる OS のクライアントとの互換性のために、サーバーに両方のソケットを組み込む必要がありますか?

4

4 に答える 4

1

ソケットはソケットであり、データをポンピングするだけです。そのため、Windows では Java でプログラムされたサーバーと BSD では C でプログラムされたクライアントを使用でき、それらは引き続き相互に通信できます。

サード パーティのライブラリを使用せずにクロス コンパイルするには、いくつかの #ifdef を使用することで多かれ少なかれ簡単に実行できます。詳細はhttp://tangentsoft.net/wskfaq/articles/bsd-compatibility.html

もう 1 つの方法は、サードパーティのライブラリを使用することです。これはおそらく最も簡単な方法であり、より高度な機能など、他の利点を活用できます。UDT が思い浮かびますが、他にもあります。( http://udt.sourceforge.net/ )

于 2012-09-30T01:05:58.733 に答える
1

ここにちょっとした秘密があります: Winsock は BSD ソケットに基づいています。winsock ライブラリの初期化と終了を除いて、実際のネットワーク コード ライブラリは BSD ソケットと Windows ソケットで同じです。

于 2012-09-30T01:06:22.607 に答える
1

Winsock と BSD ソケットは、同じものを実装する 2 つの類似 API の名前です。TCP/IP ソケットは、TCP 接続または UDP データグラム フローのエンドポイントです。実際のトランスポートは TCP/IP RFC によって定義されているため、相互運用できます。したがって、Unix での Winsock 実装、または Windows での BSD Sockets 実装は必要ありません。実際、Winsock は多かれ少なかれ後者であり、あちこちでいくつかの誤解が生じています。

要するに、あなたの質問は本当に意味がありません。

于 2012-09-30T01:09:19.100 に答える
0

より高度な機能の一部を回避する場合、Winsock は BSD 互換です。非バイトデータを扱うときの秘訣は、エンディアンを尊重することです。アーキテクチャと言語によっては、浮動小数点が扱いにくくなる場合があります。Char配列は物事を予測可能に保ちますが、それは制限になる可能性があります. プロトコルに従っていれば、必要なサーバーは 1 つだけです。

于 2012-09-30T01:05:47.387 に答える