0

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

   private StreamWriter swSender;


   private StreamSocket tcpServer;

尝试发送数据时:

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

???必须是来自 tcpServer 的 Stream,但没有像旧框架中的 TcpClient() 类中的 GetStream() 方法。任何解决方法?有任何想法吗?先感谢您。

4

2 回答 2

1

如果我没记错的话,他有InputStreamOutputStream

进而

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);
于 2012-04-26T21:46:12.477 回答
0

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

为 tcpclient 启动 streamreader 和 writer

于 2018-11-11T15:08:47.223 回答