2011-02-09 20 views
1

Monoを使用して、WindowsからLinuxへの.NET C#アプリケーションの移植を検討しています。私が抱えている問題は、非同期TCPソケット呼び出しが機能しないことです。つまり、問題なくデータを送信できますが、Socket.BeginReceive()を介してソケットからの最初の応答しか受信できないようです。次のBeginReceive()はスレッドを待機状態にします。Mono/Linuxで非同期ソケットコールバックが機能しない

原則として、私たちのソケットコードにはバグがありますが、それは何年もWindowsで完璧に動作しています。

ありがとうございました

+0

問題を複製する小さなスタンドアロンプ​​ログラムを共有できますか? –

+0

確かに、私はこのようなプログラムで問題を再現しました。許可されても、あなたが利用できないサーバーがまだ使用されています。しかし、プロトコルはあなたが見るように非常に簡単です。 – alexk

+0

申し訳ありませんが、このサイトをマスターすることはできません:-(プログラムへのリンクはhttp://www.sendspace.com/file/ptmwyy – alexk

答えて

0

同期ソケットを使用している場合、正常に動作しますか?それは問題を絞り込むための素早い方法です。

+0

同期ソケットをテストしました。唯一の違いは、受信した最後の2つのチャンク(53と12バイト)が1つの(65バイト)として受信されたということです。 – alexk

+0

小さなスタンドアロンサーバーを試してみましたが、後でコードを投稿します。 – alexk

+0

私は、問題を再現するスタンドアロンのサーバーとクライアントコードを用意しました。以下のファイルへのリンクです:http://www.sendspace.com/ファイル/ a64q05。MS Visual Studio 2008でビルドされ、Windows 7で実行されると、一連の5つのメッセージ(クライアント<->サーバ)が生成されます。Ubuntu 10.10でMono(同じMSバイナリ、 y Mono)では、クライアントからの2つのメッセージとサーバーからの1つのメッセージしか生成しません。 Windows 7のVirtualBoxでゲストとしてUbuntuを実行していることにも注意してください。 – alexk

1

モノ2-10ブランチ(すぐにモノ2.10としてリリースされます)とマスターでうまく動作します。

ubuntuに同梱されているMono 2.6.7が失敗し、Mono 2.8も失敗します。 私は問題を発見したので、修正をテストしています。 。 2.6.xシリーズの次のリリースでは、修正が加えられます(もしあれば、2.8xでも、数日で2.10に移行します)。

Btwの場合は、ここではなくhttp://mono-project.com/Bugsに続いてMonoの問題を報告する必要があります。

+0

私はバグが修正されたことを確認しました(少なくともモノ2.10)。ありがとう。私はスタンドアロンプ​​ロジェクトのために昨日検証しましたが、元の(より大きい)プロジェクトもテストするのに時間がかかりました。 – alexk

関連する問題