2013-05-16 42 views
0

我正在使用NSStream通過網絡連接發送和接收單個字符。
我使用CFStreamCreatePairWithSocketToCFHost(...)實例化流讀取和寫入。NSStream關閉和打開錯誤

發送和接收的基本工作機制工作正常。

現在我想創建NSStream只有當我需要發送或接收的東西(通常每2分鐘一次)。我第一次創建流,發送數據包,關閉它,一切正常。接下來,我嘗試重新創建NSStream(創建一個新的套接字並打開它的流),打開功能不起作用。由於我使用netcat進行測試,因此我發現在使用[NSStream close]方法關閉流時,服務器上的連接未關閉。我如何強制關閉套接字?或者有更好的方法去做我想做的事情?

+0

你是否關閉了兩端的流? – Wain

+0

不,我只關閉iPhone上的流。我無法關閉它在另一邊 – Pablosproject

回答

3

使用CFWriteStreamSetPropertyCFReadStreamSetPropertykCFStreamPropertyShouldCloseNativeSocket設置爲kCFBooleanTrue,以便在關閉流時關閉底層套接字。

+0

我試過這個解決方案,但套接字不會關閉。如果我將CFReadStreamRef和CFWriteStreamRef轉換爲NSOutputStream和NSINputStream,可能會丟失它的屬性? – Pablosproject

+0

我解決了。我必須打開兩個流並關閉它們,而不是關閉。 – Pablosproject