Tôi có hai ứng dụng .NET nói chuyện với nhau qua một đường ống có tên. Mọi thứ đều tuyệt vời lần đầu tiên thông qua, nhưng sau khi tin nhắn đầu tiên được gửi đi, và máy chủ sẽ nghe lại, phương pháp WaitForConnection()
ném một số System.IO.Exception
với thông báo Ống bị hỏng.
Tại sao tôi nhận được ngoại lệ này ở đây? Đây là lần đầu tiên tôi làm việc với các đường ống, nhưng một mô hình tương tự đã làm việc cho tôi trong quá khứ với các ổ cắm.System.IO.Exception: Ống bị hỏng
Mã ahoy!
Server:
using System.IO.Pipes;
static void main()
{
var pipe = new NamedPipeServerStream("pipename", PipeDirection.In);
while (true)
{
pipe.Listen();
string str = new StreamReader(pipe).ReadToEnd();
Console.Write("{0}", str);
}
}
Chủ đầu tư:
public void sendDownPipe(string str)
{
using (var pipe = new NamedPipeClientStream(".", "pipename", PipeDirection.Out))
{
using (var stream = new StreamWriter(pipe))
{
stream.Write(str);
}
}
}
Cuộc gọi đầu tiên sendDownPipe được máy chủ để in các thông điệp mà tôi gửi chỉ là tốt, nhưng khi nó lặp lại lên đến lắng nghe một lần nữa, nó poops.
Tôi nghĩ lý do bạn đang gặp vấn đề này là do dòng "mới StreamReader (ống) ". Phạm vi của trình đọc luồng được tạo là vòng lặp đầu tiên và sau đó được tạo lại. Tuy nhiên, hành vi của trình đọc luồng là đóng luồng mà chúng đang gói - vì vậy khi nó nằm ngoài phạm vi, nó sẽ đóng luồng luồng. Bạn có thể thử di chuyển tuyên bố của nó ra khỏi vòng lặp while và kiểm tra (P.S: Tôi không đích thân thử nếu mã hoạt động nếu bạn làm như vậy - chỉ muốn thêm một bình luận thay vì trả lời) – user3141326