0

私が直面している問題:-

Select(..) API は、Win7 Home プレミアムで IPv6 および IPv4 ソケットを含む FD_SET セットで呼び出されるとエラーをスローしますが、同じアプリケーションは他の win7 マシンで正常に実行されます。しかし、FD_SET で IPv6 または IPv4 ソケットのみを使用すると、正常に動作します。つまり、システムはIPv6とIPv4の両方をサポートしていると思います。

以下のリンクからサーバーを使用してみました:-

http://msdn.microsoft.com/en-us/library/windows/desktop/ms738639%28v=vs.85%29.aspx

このサンプルでも、select 呼び出しからの同じエラーです。

このエラーの背後にある理由を知り、この問題を解決するために、誰でも助けてください。

ありがとう!!!

4

1 に答える 1

0

残念ながら、Windows では、 への同じ呼び出しで異なるプロバイダーからのソケットを混在させることは許可されていませんselect。これは、各プロバイダーが独自のselectハンドラーを実装することを許可されているためです。

fd_set 構造内に含まれるソケットは、単一のサービス プロバイダーに関連付ける必要があります。--機能を選択

Windowsは送信先のプロバイダーを選択しますselect(セット内の最初のソケットのプロバイダーだと思います)が、そのプロバイダーは他のプロバイダーのソケットを認識しません。select正直なところ、とにかく使用するべきではありません。これは、BSD ソケット インターフェイスとの互換性のために提供されているだけです。それは間違いなく「Windowsのやり方」ではありません。

于 2012-05-22T10:05:57.907 に答える