如何从 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() 方法。有什么解决方法吗?有什么想法吗?提前谢谢你。
如果我没记错的话,他有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 启动流读取器和编写器