我正在尝试将对象传递给StreamSocket
,因此我需要先将其序列化,然后才能执行此操作。
我查看了BinaryFormatter
,但在UWP中似乎没有?
有关如何序列化对象的任何建议,最好是以最紧凑的方式。
答案 0 :(得分:3)
您可以序列化自己的.NET对象; JSON.NET是一个非常受欢迎的选择,但如果您不想要任何依赖项,内置的DataContractSerializer也应该有效。
您无法序列化任何WinRT对象。
答案 1 :(得分:0)
如果要将对象序列化为json,首先必须将Newtonsoft.Json添加到项目中。
要安装Json.NET,请在程序包管理器控制台中运行以下命令:
PM>安装包Newtonsoft.Json
然后使用此代码传递您的对象:
(注意:在此示例中,我假设您的服务器和客户端相同,并且您使用的端口是:1800。)
try
{
Windows.Networking.Sockets.StreamSocket socket = new Windows.Networking.Sockets.StreamSocket();
Windows.Networking.HostName serverHost = new Windows.Networking.HostName("127.0.0.1");
string serverPort = "1800";
socket.ConnectAsync(serverHost, serverPort);
var json = JsonConvert.SerializeObject(object);
byte[] buffer = Encoding.UTF8.GetBytes(json);
Stream streamOut = socket.OutputStream.AsStreamForWrite();
StreamWriter writer = new StreamWriter(streamOut);
var request = json;
writer.WriteLine(request);
writer.Flush();
Stream streamIn = socket.InputStream.AsStreamForRead();
StreamReader reader = new StreamReader(streamIn);
string response = reader.ReadLine();
}
catch (Exception e)
{
var err = e.Message;
//Handle exception here.
}
如果您有任何其他问题,请通知我。