如何从StreamSocket获取流

时间:2012-04-26 21:36:32

标签: c# sockets client-server streamwriter .net-4.5

我正在开发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()方法。任何解决方法?有任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果我没有错,他有 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);

答案 1 :(得分:0)

您可以使用类似的东西(正确处理)

Starting streamreader and writer for tcpclient