Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
我需要一个工作示例,说明如何在简单的客户端和服务器实现中使用[Named-Pipe-Wrapper]库v1.4。

我很难获得Named-Pipe-Wrapper库v1.4在1个客户端和服务器之间发送/接收消息。
我可以看到我的客户端已连接,但是客户端和服务器之间发送的消息没有通过。

我究竟做错了什么?

我选择此库是因为在客户端和服务器之间传递强类型对象似乎很容易,而不必处理这些对象的序列化和反序列化。

这是我下面出于测试目的而组合的代码。

class Program
{
    static void Main(string[] args)
    {
        var server = new NamedPipeServer<Message>("MyPipe");
        server.ClientConnected += delegate (NamedPipeConnection<Message, Message> conn)
        {
            Console.WriteLine("Client {0} is now connected!", conn.Id);
        };
        server.ClientMessage +=
            delegate (NamedPipeConnection<Message, Message> conn, Message message)
        {
            Console.WriteLine("Client {0} message received !", conn.Id);
            Console.WriteLine("Client {0} says: {1}", conn.Id, message.Text);
            conn.PushMessage(new Message() { Text = "HELLO from server" });
        };
        server.Start();

        var client = new NamedPipeClient<Message>("MyPipe");
        client.ServerMessage +=
            delegate (NamedPipeConnection<Message, Message> conn, Message message)
        {
            Console.WriteLine("Server says: {0}", message.Text);
        };
        client.Start();
        //client.WaitForConnection(1000);
        client.PushMessage(new Message() { Text = "HELLO from client" });

        Console.ReadLine();
    }
}

public class Message
{
    public string Text { get; set; }
}


更新资料
如果我使用本机数据类型,则可以使用,但是当我将简单类与本机类型一起使用时,则无法使用。

更新2
我编写的代码不错,但是要求我在Message类上添加[serializable]属性。

最佳答案

您的Message类需要[serializable]属性。

关于c# - 命名管道包装器库工作示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38122200/

10-09 09:03