【问题标题】:How can I make a TCP-IP communication between 2 Visual C# apps?如何在 2 个 Visual C# 应用程序之间进行 TCP-IP 通信?
【发布时间】:2011-08-03 20:25:18
【问题描述】:

我只需要知道如何将消息从服​​务器发送到客户端,如果通信可以是双向的,那将是完美的,但这不是必需的。

【问题讨论】:

标签: c# visual-studio-2005 tcp


【解决方案1】:

一种简单的方法是使用套接字来完成此操作。一个很好的参考是:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx

它的开销很小,并且可以比远程处理或其他类型的通信更简单地配置。

【讨论】:

    【解决方案2】:

    考虑通过 tcp/ip 使用 .net 远程处理。这使得双向通信变得轻而易举。一侧需要TcpServerChannel,另一侧需要TcpClientChannel。服务器端将有一个扩展 MarshalByRefObject 的对象。

    public class MyServerClass : MarshalByRefObject
    {
       public override void InitializeLifetimeService ()
       {
          return null;
       }
    
       public string SendAndRecieve (string message)
       {
          return message + message;
       }
    }
    

    【讨论】:

    • 远程处理被认为是一种“传统”技术。当前的替代品是 WCF,它更易于使用、性能更高,并且符合 HTTP 和 SOAP 等行业标准。
    • 是的,但是,他说他正在使用 VS 2005,我猜也是 .NET 2.0,所以从某种意义上说,开发旧版应用程序
    【解决方案3】:
    1. WCF nettcpbinding 来自 .net 3.5 .Net Remouting 来自 .net 2
    2. TcpListener
    3. Sockets

    尝试google的例子,有很多这样的例子

    【讨论】:

      【解决方案4】:

      另一种方法是使用 System.Messaging 命名空间并通过 MSMQ 交换消息。不确定您的要求,因此这可能不是最佳方法,但它是另一种在 2 个 .Net 进程之间快速获取消息的方法。

      【讨论】:

        【解决方案5】:

        对于 VS 2005/.NET 2.0 试试 .NET Remoting

        编辑

        除非你喜欢这个练习,否则我建议不要使用套接字。 .NET Remoting 允许 TCP、UDP、IPC 通信,并且对于您的代码,它看起来就像您正在调用对象的方法/属性。此外,任何可序列化的数据结构都可以通过线路传递,这使您可以使用丰富的数据表示,而不是在套接字级别打包/解析字节流。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-24
          • 1970-01-01
          相关资源
          最近更新 更多