2016-09-13 42 views
0

我正在修改一些基於TCPClient的代碼,以使其與UWP一起工作。我試圖用一個基於StreamSocket的TCPClient基礎設施來替換它。我遇到的問題是這種替換:使用StreamSocket輸入流配置AsyncCallback方法

  client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(FetchFrame), null); 

我找不到StreamSocket等效的方法,讓我建立一個異步回調函數(在這種情況下FetchFrame)用於讀取輸入流。有任何想法嗎?

回答

0

我找不到一個StreamSocket的等價方法,它允許我設置一個用於讀取輸入流的異步回調函數(在本例中爲FetchFrame)。

據我所知,沒有辦法爲StreamSocket輸入流設置異步回調函數。 TCPClient.GetStream返回一個NetworkStream對象,該對象在UWP中不存在。

但由於在BeginRead完成後執行回調。我們可以用UWP方式來完成。您可以通過以下代碼首先獲取輸入流:

Stream streamIn = socket.InputStream.AsStreamForRead();//socket is a StreamSocket instance 
StreamReader reader = new StreamReader(streamIn); 
string response = await reader.ReadLineAsync(); 

在此之後,你可以調用根據你得到的結果你FetchFrame

FetchFrame(response). 

有關使用StreamSocket的詳細信息,請參閱Sockets in UWP

而且還有一個官方樣本指向:StreamSocket

注:與Documentation不同,官方Sample使用DataReader加載輸入流。