2017-09-27 3 views
0

간단한 TCP 서버를 개발 중입니다. 고객과의 의사 소통을하기 위해 나는 그렇게처럼 StreamWriter 클래스를 사용 :콘솔 응용 프로그램은 Windows에서 작동하고, Linux에서는 모노가 없습니다.

client.ClientWriter.WriteLine(command); 
client.ClientWriter.Flush(); 

이 명령은 줄 끝 System.Environment.NewLine 다음에 하나의 단어입니다. 내 클라이언트 (루아로 작성)는 다음과 같은 명령을 확인합니다.

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을 실행하는 프로그램을 실행할 수 있습니다. 하지만 여전히 다른 컴퓨터 (실행해야 할 컴퓨터)에서 실행할 수는 없습니다. 4.2.3.

이 문제의 원인은 무엇입니까?

+1

줄 종결자가이를 담당 할 수 있습니다. Windows에서는 "\ r \ n"이며 Unix에서는 단순히 "\ n"입니다. –

+4

이와 같은 오류를 피하려면 항상 C#에서'System.Environemt.NewLine'을 사용하십시오. – waka

+0

LUA 클라이언트가 실제로받는 것을 확인 했습니까 (일반적으로 "디버깅"이라고 함)? –

답변

0

이 문제는 단지 더 큰 것의 증상 일뿐입니다. 작업에서 명령을 읽습니다. 내가 사용하는 Mono (버전 4.1.3)에는 분명히 일부 작업이 시작되지 못하도록하는 버그가있어서 대신 명시 적으로 스레드를 선언했습니다.

관련 문제