如何将字典从服务器发送到客户端?
我要发送以下字典
Dictionary rates = new Dictionary();
rates.Add("usd", 47.5);
rates.Add("eur", 60.4);
rates.Add("ukp", 78.8);
更新:
代码不起作用,我的问题在哪里?这种做法是否错误?
请给我看正确的密码
服务器中的代码:
public void GetListn()
{
var dataToSend = new DataToSend { Rates = new Dictionary<string, decimal>() };
dataToSend.Rates.Add("asd", decimal.Parse("12.23"));
dataToSend.Rates.Add("asd", decimal.Parse("41.11"));
dataToSend.Rates.Add("asd", decimal.Parse("25.23"));
var stream = new MemoryStream();
var formatter = new BinaryFormatter();
formatter.Serialize(stream, dataToSend.Rates);
client.Send(stream.ToArray());
}
public class DataToSend
{
public Dictionary<string, decimal> Rates { get; set; }
}
客户端中的代码:
private void WindowLoaded(object sender, RoutedEventArgs e)
{
try
{
_server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_server.Connect(_ipep);
_server.Send(Encoding.Unicode.GetBytes("GetList"));
_data = new byte[BufferSize];
_recv = _server.Receive(_data);
var stream = new MemoryStream(_server.Receive(_data));
var formatter = new BinaryFormatter();
var dataToSend = (DataToSend)formatter.Deserialize(stream);
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
}
public class DataToSend
{
public Dictionary<string, string> Rates { get; set; }
}
最佳答案
Dictionary rates = new Dictionary();
?
从您的示例代码中,我假设您的意思是Dictionary rates = new Dictionary<string, decimal>();
因此,无论如何,既然您明确询问了字典,我还假设您已经可以发送原始数据了?在这种情况下,请创建一个新类:
[Serialisable]
public class DataToSend
{
public Dictionary<string, decimal> Rates { get; set; }
}
然后在您的客户端中填充DataToSend对象,并将其序列化为
var stream = new MemoryStream();
var formatter = new BinaryFormatter();
formatter.Serialize(stream, DataToSend);
并通过套接字发送该流。
关于sockets - 将带有套接字编程的字典从服务器发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070584/