私はシンプルなTCPサーバを開発しています。私はStreamWriter
クラスを使用してクライアントと通信するには、のようなので:コンソールアプリケーションはWindowsで動作し、Linuxではモノラルではありません
client.ClientWriter.WriteLine(command);
client.ClientWriter.Flush();
コマンドは、行終端System.Environment.NewLine
続く単一の単語、です。私のクライアント(LUAで書かれた)、このようなコマンドをチェック:
if data:find("INIT") then DoSomething()
elseif data:find("START") then DoSomethingElse()
...
else SendResponse("BAD REQUEST")
私はVS2017を使用して、元のアプリを開発しました。私はWindowsマシン上でそれを実行すると、アプリは完全に動作します。
しかし、Monoを実行しているLinuxに自分のアプリケーションを配備する必要があります。 Linuxでアプリをテストしたところ、クライアントに送信したコマンドはすべて認識されず、"BAD REQUEST"
が返されました。 Windowsマシンで問題を再現できませんでした。
EDIT:いくつかのテストの後、mono 4.2.1を実行しているKubuntuでプログラムを実行できます。しかし私はまだモノを実行している私の他のマシン(私が展開する必要があるマシン)で実行することはできません4.2.3。
この問題の原因は何ですか?
ラインターミネータが原因である可能性があります。 Windowsでは "\ r \ n"はUnix上では単に "\ n"です。 –
このようなエラーを避けるには、常にC#で 'System.Environemt.NewLine'を使用してください。 – waka
LUAクライアントが実際に受け取ったもの(通常「デバッグ」と呼ばれています)を確認しましたか? –