2

そこで今日、 SSHNet APIを介してリモート ホストへの SFtp 接続を作成しようとしました。クイック アンド ダーティ コンソール アプリケーションでのテストは非常にうまく機能しましたが、機能を追加する必要があるプロジェクトでビルドされた DLL を参照すると、DLL が例外をスローしていました。

プロジェクトをデバッグすると、例外はソケット接続 (または接続機能の開始) にあることが判明しました。

ソケット操作で、デッド ネットワークが検出されました。

前に述べたように、別のプロジェクトで同じパラメーターを使用してまったく同じサーバーに接続すると、問題なく動作しました。

プロジェクト/ソリューション構成を確認しました。サーバー名とその他のパラメーターを慎重に確認し、特定のプロジェクトでは (サーバーに関係なく) 常に失敗するが、(新しい) プロジェクトでは機能するテストケースを作成しました。

var ep = new IPEndPoint(IPAddress.Parse(IPAdres),Port);
var sock = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);

//  Connect socket with specified timeout
var connectResult = sock.BeginConnect(ep, null, null);

if (!connectResult.AsyncWaitHandle.WaitOne(180, false))
{
    throw new Exception("Timeout");
}

sock.EndConnect(connectResult);

しかし、これは奇妙な例のようには思えません。プロジェクト固有の方法でこの種のエラーを経験した人はいますか? 足りないものはありますか?

ありがとう、

4

1 に答える 1

0

ライブラリが間違った NIC を使用していた可能性がありますか?

.net CF 2.0 を搭載した Windows CE デバイスでこの例外が発生しました。私の場合、GPRS インターフェイス用のソケットを作成していましたが、デバイスはイーサネット経由で接続されていました。

于 2016-11-24T12:49:48.027 に答える