명명 된 파이프를 수행하는 방법을 배우려고합니다. 그래서 LinqPad에 서버와 클라이언트를 만들었습니다. 여기 명명 된 파이프 서버 및 클라이언트 - 아니요 메시지
var p = new NamedPipeServerStream("test3", PipeDirection.Out);
p.WaitForConnection();
Console.WriteLine("Connected!");
new StreamWriter(p).WriteLine("Hello!");
p.Flush();
p.WaitForPipeDrain();
p.Close();
내 클라이언트입니다 : 여기
내 서버입니다 내가 다음 서버 및 클라이언트를 실행
var p = new NamedPipeClientStream(".", "test3", PipeDirection.In);
p.Connect();
var s = new StreamReader(p).ReadLine();
Console.Write("Message: " + s);
p.Close();
, 나는 페이지의 "연결!" 서버에 표시되어 제대로 연결됩니다. 그러나 클라이언트는 항상 뒤에 Message:
을 표시하므로 실제로 데이터가 서버에서 클라이언트로 이동하여 표시되지 않습니다. 나는 이미 파이프 방향을 바꿔보고 클라이언트가 동일한 결과로 서버에 데이터를 보내도록했습니다.
이 예에서 화면에 데이터가 인쇄되지 않는 이유는 무엇입니까? 내가 뭘 놓치고 있니?
감사합니다. 다음과 같이
StreamReader.ReadLine 문서에 따르면 스트림 끝 부분에 도달하면 null을 반환합니다. ReadLine을 할 때 파이프에 데이터가없고 스트림이 비어있을 수 있습니다. 다시 돌아가서 s가 null 인 경우 다시 읽으려고 할 수 있습니다. – user957902