gpt4 book ai didi

c# - 通过套接字发送不同类型的消息

转载 作者:可可西里 更新时间:2023-11-01 02:51:53 25 4
gpt4 key购买 nike

我有一个发送不同类型消息的 tcp 客户端,我有点困惑如何让它工作。首先,客户端发送一个字符串(转换为 byte[])并且工作正常,但随后我试图发送一个序列化对象,但我不知道该怎么做以及如何让服务器理解该消息是' 一个字符串。我要发送的对象是RSA算法的公钥

 IFormatter formatter=new BinaryFormatter();
formatter.Serialize(client.GetStream(),RSAParameterskeyinfo);

但我不知道如何让服务器明白这条消息不是字节[]。

最佳答案

为了让您的服务器了解他必须计算哪种类型的对象,您必须在客户端和服务器之间共享一个 dll。这里的困难部分是处理此 dll 的版本(当您对要在客户端和服务器之间共享的对象进行更改时,您将不得不更新每一方的 dll)

然后使用 BinaryFormatter 序列化/反序列化您的对象。首先在客户端用类似的东西序列化你的对象:

MyMessage msg = new MyMessage("My custom message")
byte[] data;
using(var ms = new MemoryStream()) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, msg);
data = ms.ToArray();
/*
* Send to stream
*/
}

然后在服务器大小上你必须像这样反序列化它:

/*
* Get the network stream
*/
BinaryFormatter formatter = new BinaryFormatter();
MyMessage msg = (MyMessage) formatter.Deserialize(myStream);

由于它们共享相同的 dll,所以每一方都知道 Message 对象。

有关 BinaryFormatter 的更多信息,请参阅:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx

关于c# - 通过套接字发送不同类型的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com