2012-04-26 54 views
0

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

private StreamWriter swSender; 


    private StreamSocket tcpServer; 

当试图发送数据:

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

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

回答

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); 
+0

谢谢你的答案,但在你的代码中,你正在等待来自服务器的响应,然后客户端从服务器获取消息。我的问题更多地涉及客户向服务器发送信息的情况。这就是我试图使用StreamWriter的原因。 – 2012-04-26 21:55:31

+0

@DimitarGyurov看看编辑部分 – Likurg 2012-04-27 06:04:17

+0

dr.ReadInt32()返回一个巨大的数字,并以OutOfMemoryException结尾 – 2012-12-11 09:22:31