如何在 2 个 Visual C# 应用程序之间进行 TCP-IP 通信?
我只需要知道如何从服务器向客户端发送消息,如果通信可以是双向的那就完美了,但这不是必需的。
I just need to know how can I send a message from a server to a client, if the communication could be bidirectional it would be perfect, but it is not necessary.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
一种简单的方法是使用套接字来完成此任务。一个很好的参考是:
http://msdn。 microsoft.com/en-us/library/system.net.sockets.socket.aspx
它的开销很小,并且配置比远程处理或其他类型的通信简单得多。
One easy way would be to use Sockets to accomplish this. A good reference for this is:
http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
It has little overhead and can be configured much more simply than Remoting or other types of communication.
考虑通过 tcp/ip 使用 .net 远程处理。这使得双向通信变得轻而易举。你需要一个TcpServerChannel 在一侧,一个 TcpClientChannel 在另一边。服务器端将有一个扩展 MarshalByRefObject 的对象。
Consider using .net remoting over tcp/ip. This makes bi-directional communication a breeze. You'll need a TcpServerChannel on one side, a TcpClientChannel on the other side. The server side will have an object that extends MarshalByRefObject.
尝试google 一下例子,有很多这样的例子
Try to google for examples, there are many examples with this
另一种方法是使用 System.Messaging 命名空间并通过 MSMQ 交换消息。不确定您的要求,因此这可能不是最好的方法,但它是在 2 个 .Net 进程之间快速获取消息的另一种方法。
Another approach would be to use the System.Messaging namespace and exchange messages over MSMQ. Not sure of your requirements, so that may not be the best approach, but it is another way to quickly get messages between 2 .Net processes.
对于 VS 2005/.NET 2.0,请尝试 .NET Remoting
编辑
除非您喜欢这个练习,否则我建议您不要使用套接字。 .NET Remoting 允许 TCP、UDP、IPC 通信,对于您的代码来说,它看起来就像您在调用对象上的方法/属性。此外,任何可序列化的数据结构都可以通过线路传递,这使您可以使用丰富的数据表示形式,而不是在套接字级别打包/解析字节流。
For VS 2005/.NET 2.0 try .NET Remoting
Edit
Unless you enjoy the exercise I would advise against sockets. .NET Remoting allows for TCP, UDP, IPC communication and to your code it just looks like you are calling a method/property on an object. Also, any data structure that is serializable can be passed over the wire which lets you use rich data representation, rather than packaging/parsing byte streams at the socket level.