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

时间:2019-05-21 07:58:29

标签: c# c++ visual-studio xaml uwp

我目前正在为此现代化HMI,我使用Microsoft提出的平台UWP。 HMI的旧版本是在C++中开发的,但是出于新的需要,现在是在C# / XAML中开发的。

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

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

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

int ServerConnexion::server_input (ACE_HANDLE) {

  char data[2048]; 
  int tailleRecue = 0;

  switch (tailleRecue = peer().recv(data, sizeof(data))) {

    case -1:

          console.print("Read Error.");

    case 0:

          console.print("Closed");

    default:

            char *debutMsg = data; 
        int longueurMsg;

        do {
            longueurMsg = decodeMsg(debutMsg);
            debutMsg = debutMsg + longueurMsg; 
        } while (((debutMsg - data)  < tailleRecue) && (longueurMsg != -1));
    }

  return 0;
}

现在这是我在新HMI中的代码,该部分在后台任务中执行:(C#

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

我该如何解决问题?

是否存在用于通过UWP套接字读取和解码字节的函数或方法?

0 个答案:

没有答案