C# 用C语言实现简单的TCP网络

C# 用C语言实现简单的TCP网络,c#,.net,networking,tcp,C#,.net,Networking,Tcp,有没有一种简单的方法可以使用C在应用程序之间发送对象?对象并不总是相同的,例如会有一个请求和响应类,连接的每一侧都会有一种switch语句,它决定接收到哪个对象 有没有一种简单的方法可以在不需要第三部分库的情况下在C中实现类似的功能?.NETRemoting或多或少满足您的需要,您可以使用接口类作为执行switch语句的类 .NET远程处理或多或少满足您的需要,您可以使用接口类作为执行switch语句的类 通过原始TCP连接完成此操作的最简单方法是创建一个DLL,该DLL由连接两侧的应用程序引用

有没有一种简单的方法可以使用C在应用程序之间发送对象?对象并不总是相同的,例如会有一个请求和响应类,连接的每一侧都会有一种switch语句,它决定接收到哪个对象


有没有一种简单的方法可以在不需要第三部分库的情况下在C中实现类似的功能?

.NETRemoting或多或少满足您的需要,您可以使用接口类作为执行switch语句的类


.NET远程处理或多或少满足您的需要,您可以使用接口类作为执行switch语句的类


通过原始TCP连接完成此操作的最简单方法是创建一个DLL,该DLL由连接两侧的应用程序引用。将所有通信类放在此DLL中,并将每个类型标记为可序列化。这使对象能够进行二进制序列化,因此可以轻松地转换为可直接通过TCP连接传递的字节[]


如果您有更多的灵活性,您可能想考虑更高级别的东西,但是像远程处理服务或WCF

< P>最简单的方法是通过一个原始TCP连接来实现,这是创建一个DLL,它由连接两侧的应用程序引用。将所有通信类放在此DLL中,并将每个类型标记为可序列化。这使对象能够进行二进制序列化,因此可以轻松地转换为可直接通过TCP连接传递的字节[]


如果您有更多的灵活性,您可能需要考虑更高级别的东西,比如远程处理服务或WCF

> P >如果您不需要用逻辑指令发送完整的二进制对象,可以将请求和响应类序列化为XML,并通过流发送文本。带有逻辑指令的二进制对象您可以将请求和响应类序列化为XML,并通过流发送文本。

WCF可以在这里工作,您只需要设置一个接口来描述要传递的对象。这是一个很好的使用教程。

WCF可以在这里工作,您只需要设置一个描述要传递的对象的界面。这是一个很好的使用教程。

简单的定义也取决于您的需求。内置功能(如WCF)不会被归类为第三方库,因此提供了一种在C应用程序之间安全发送对象的简单方法。WCF可以自动为您生成代理,所以您只需定义数据契约并公开服务。您可以在VisualStudio中添加服务引用,并公开这些方法


我将重新迭代,这实际上取决于您想要做什么,以确定最简单的解决方案是什么。

简单的定义也取决于您的需求。内置功能(如WCF)不会被归类为第三方库,因此提供了一种在C应用程序之间安全发送对象的简单方法。WCF可以自动为您生成代理,所以您只需定义数据契约并公开服务。您可以在VisualStudio中添加服务引用,并公开这些方法


我将重新迭代,这实际上取决于您想做什么,以确定最简单的解决方案。

我总是试图将问题视为在应用程序之间发送数据,而不是对象之间发送数据。分布式对象模型几乎总是以眼泪告终,因为你没有真正的共享状态。

我总是试图将问题视为在应用程序之间发送数据,而不是在对象之间发送数据。分布式对象模型几乎总是以眼泪告终,因为您没有真正的共享状态。

这确实可行,但会在空间和网络流量方面产生更大的开销。.网络远程处理是WCF的前身。认真考虑使用WCF,同时考虑.NET Rebug。更高级别传输的价值、对象反序列化的易用性以及IDE支持的价值超过了开销。参考前面的评论:@steven-序列化为XML将创建一个更大的负载,与粗粒度的消息传递一样。NET远程处理,据我所知,可以使用字节流通过对象的序列化形式发送,因此具有较小的负载@Russell-同意,我本来想提到WCF,但OP似乎暗示他们想要更多的定制。WCF的使用也非常优雅。这确实有效,但会在空间和网络流量方面产生更大的开销。NetRemoting是WCF的前身。认真考虑使用WCF,同时考虑.NET Rebug。更高级别传输的价值、对象反序列化的易用性以及IDE支持的价值超过了开销
我会创建一个更大的有效负载,使用同样粗粒度的消息传递。NET远程处理,据我所知,可以使用字节流通过对象的序列化形式发送,因此具有较小的负载@Russell-同意,我本来想提到WCF,但OP似乎暗示他们想要更多的定制。WCF的使用也非常优雅。这个解决方案真的很快很容易做到。这个解决方案真的很快很容易做到。通过Tcp流进行序列化将是我的首选,而不是远程处理。而且WCF的强度可能远远超过此操作所需的强度。取决于总体使用情况、要求和/或预期。通过Tcp流进行序列化将是我的首选,而不是远程处理。而且WCF的强度可能远远超过此操作所需的强度。取决于总体使用情况、要求和/或期望。