我有一个UDP服务器,我正在试图发送的结构,使用发送()方法。没有运气这么远...

这是我的使用:

H,G结构...

送方面:

IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, H);
Byte[] buffer = stream.ToArray();
stream.Close();

和接收器上的一面:

IFormatter formatter = new BinaryFormatter();
Stream s = new MemoryStream(buffer.Data);
ClientAnswerStruct G = (ClientAnswerStruct)formatter.Deserialize(s);
s.Close();
MessageBox.Show(G.name);

但我得到这个错误:

 Unable to find assembly 'UdpClientSample, Version=1.0.0.0, Culture=neutral,    PublicKeyToken=null'.

'UdpClientSample'是标题的客户程序发送的数据服务器...所以我想知道,如果它需要更多化能够使发送的结构,通过UDP connection?

是否有一个突破,解释了什么是Iamamac说的吗?

有帮助吗?

解决方案

我没有看到整个代码,但我想在服务器和客户端是两个不同的可执行文件,并ClientAnswerStruct类中定义的两次的两侧。当接收器反序列化的数据,它试图重建ClientAnswerStruct对象,但无法找到它的定义(请注意,这是发件人的侧定义。虽然在接收侧有一类名为ClientAnswerStruct,但它们是不一样的)

要做到这一点的正确的方法是在一个独立的类库定义ClientAnswerStruct类,并让服务器和客户端代码包括它(“加参考” C#中的术语)。

其他提示

我会建议澄清你的问题有点。 。 。我假设你正在尝试使用下面的函数在C或C ++?

  

ssize_t供发送(INT插座,常量空隙   *缓冲液,为size_t长度,INT标志);

让我们知道您有具体问题,如:错误信息,不工作的示例代码,等等

如果你在谈论C ++,比结构是一类除了在结构的所有成员默认都是公有的。技术上(但重要的是)你没有发送类或结构,但一个对象或基本数据类型的一个实例。

-bn

作为lamamac已经说过,这似乎不是一个问题你的代码或功能的使用。只是,你增加了一个参考你的应用程序称为 UdpClientSample 但是当你开始你的应用程序,它不能找到所需要的应用程序。

第一个最简单的方法来解决这一问题是选择的参考项目中,对击中,选择性和设定的酒店 复制地方 来真实的。

如果应用程序现在开始你应该做一个想到的 负荷了使用AssemblyResolve使用ILMerge

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top