如何从 StreamSocket 获取流

本文关键字:获取 StreamSocket | 更新日期: 2023-09-27 18:32:19

我正在开发Metro Client-Server应用程序,在客户端中我使用StreamSocket连接到侦听服务器。然后我尝试使用 StreamWriter 将数据发送到服务器。问题是,当我创建新的 StreamWriter 对象时,我需要给他一个流参数。就我而言,我需要从StreamSocket给他Stream。这就是我要说的:

   private StreamWriter swSender;

   private StreamSocket tcpServer;

尝试发送数据时:

   swSender = new StreamWriter(????);
   swSender.WriteLine(mytext);
   swSender.Flush();

????必须是来自 tcpServer 的 Stream,但没有像旧框架中的 TcpClient() 类那样的 GetStream() 方法。有什么解决方法吗?有什么想法吗?提前谢谢你。

如何从 StreamSocket 获取流

如果我没记错的话,他有InputStream和OutputStream

然后

async private void WaitForData(StreamSocket socket)
{
 var dr = new DataReader(socket.InputStream);
 //dr.InputStreamOptions = InputStreamOptions.Partial;
 var stringHeader = await dr.LoadAsync(4);
 if (stringHeader == 0)
 {
    // disconnected
    return;
 }
 int strLength = dr.ReadInt32();
 uint numStrBytes = await dr.LoadAsync((uint)strLength);
 string msg = dr.ReadString(numStrBytes);
 WaitForData(socket);
}

编辑

所以你需要这样的东西

IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(text,   BinaryStringEncoding.Utf8);
tcpServer.OutputStream.WriteAsync(buffer);

你可以使用这样的东西(正确处理)

为 tcpclient 启动流读取器和编写器