题
我有一个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