2017-09-27 40 views
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的機器上運行它(我需要部署該機器)。

這個問題的原因是什麼?

+1

行終止符可能是這個責任。在Windows上,它是Unix上的「\ r \ n」,它只是「\ n」。 –

+4

在C#中總是使用'System.Environemt.NewLine'來避免這樣的錯誤。 – waka

+0

您是否檢查過您的LUA客戶端實際收到的內容(通常稱爲「調試」)? –

回答

0

事實證明,這個問題只是更大的一個症狀。我從任務執行讀取命令。我使用的單聲道(版本4.1.3)顯然有一個阻止某些任務啓動的錯誤,所以我明確聲明瞭一個線程。

相關問題