控制台应用程序在Windows上工作,不在与Mono的Linux上
问题描述:
我正在开发一个简单的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的机器上运行它(我需要部署该机器)。
这个问题的原因是什么?
答
事实证明,这个问题只是更大的一个症状。我从任务执行读取命令。我使用的单声道(版本4.1.3)显然有一个阻止某些任务启动的错误,所以我明确声明了一个线程。
行终止符可能是这个责任。在Windows上,它是Unix上的“\ r \ n”,它只是“\ n”。 –
在C#中总是使用'System.Environemt.NewLine'来避免这样的错误。 – waka
您是否检查过您的LUA客户端实际收到的内容(通常称为“调试”)? –