C# 如何解决通过套接字接收数据的问题?

C# 如何解决通过套接字接收数据的问题?,c#,c++,visual-studio,xaml,uwp,C#,C++,Visual Studio,Xaml,Uwp,我目前正在对HMI进行现代化,为此,我使用微软提出的平台UWP。HMI的旧版本是在C++中开发的,但为了满足新的需求,现在是在C#/XAML中开发的 我负责应用程序的所有通信部分,它与服务器进行永久通信 为了处理这个连接,我使用套接字和后台任务来永久读取数据。在连接级别没有问题,应用程序可以很好地连接到服务器。通过cons,我无法读取HMI接收到的数据 这是旧代码的一部分(部分数据恢复):(C++) 当然,我遇到的一个问题是显示此错误: No mapping for the Unicode ch

我目前正在对HMI进行现代化,为此,我使用微软提出的平台UWP。HMI的旧版本是在
C++
中开发的,但为了满足新的需求,现在是在
C#/XAML
中开发的

我负责应用程序的所有通信部分,它与服务器进行永久通信

为了处理这个连接,我使用套接字和后台任务来永久读取数据。在连接级别没有问题,应用程序可以很好地连接到服务器。通过cons,我无法读取HMI接收到的数据

这是旧代码的一部分(部分数据恢复):(
C++

当然,我遇到的一个问题是显示此错误:

No mapping for the Unicode character exists in the target multi-byte code page
我怎样才能解决这个问题


是否有使用UWP套接字读取和解码字节的功能或方法?

同时提到了
ReadBuffer
ReadBytes
方法。从帮助中可以看出,DataReader用于从数据库读取数据。你应该用别的东西代替。大概还有。@botje我测试过,但效果不太好,你有示例代码吗?@Dialogius TcpClient替换了当前使用它的所有登录系统…其中提到了一个
ReadBuffer
和一个
ReadBytes
方法。我在帮助中看到的DataReader用于从数据库读取数据。你应该用别的东西代替。大概还有。@botje我已经测试过了,但效果不是很好,你有示例代码吗?@Dialogius TcpClient替换了所有当前运行它的登录系统。。。
var socket = socketInformation.StreamSocket;
DataReader reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
await reader.LoadAsync(250);

var dataString = reader.ReadString(reader.UnconsumedBufferLength);
localSettingsData.Values["data"] = dataString;
No mapping for the Unicode character exists in the target multi-byte code page