2017-09-27 38 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)显然有一个阻止某些任务启动的错误,所以我明确声明了一个线程。

相关问题