0
我正在開發一個簡單的TCP服務器。爲了與客戶溝通我使用StreamWriter
類,像這樣:控制檯應用程序在Windows上工作,不在與Mono的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機器上重現該問題。
編輯:經過一些測試,我能夠在Kubuntu上運行程序運行單聲道4.2.1;但我仍然無法在我的另一臺運行單聲道4.2.3的機器上運行它(我需要部署該機器)。
這個問題的原因是什麼?
行終止符可能是這個責任。在Windows上,它是Unix上的「\ r \ n」,它只是「\ n」。 –
在C#中總是使用'System.Environemt.NewLine'來避免這樣的錯誤。 – waka
您是否檢查過您的LUA客戶端實際收到的內容(通常稱爲「調試」)? –