![](/img/trans.png)
[英]NSNetService publishes, but didAcceptConnectionWithInputStream… is never called
[英]How does didAcceptConnectionWithInputStream:outputStream: get called?
我的第一個問題是如何在NSNetServiceDelegate
中獲取didAcceptConnectionWithInputStream:outputStream:
回調以進行調用?
后續問題:盡管我從未收到表示已接受連接的回調(通過didAcceptConnectionWithInputStream:outputStream:
,但我仍然可以在客戶端和服務器之間建立連接嗎?
我知道在傳遞NSNetServiceListenForConnections
選項的同時調用publishWithOptions
應該導致NetServiceDelegate
回調( didAcceptConnectionWithInputStream:outputStream:
被調用。 但是,該回調不會被調用。
這是我要發布的步驟:
使用創建NSNetService
self.netService = [[NSNetService alloc] initWithDomain:@“”類型:_serviceType名稱:(_ name == nil)嗎? @“”:_name port:0];
在默認模式下,在當前運行循環中計划服務
publishWithOptions:NSNetServiceListenForConnections
這是我瀏覽服務的步驟:
NSNetServiceBrowser
,並將其委托設置為我的客戶端包裝對象 searchForServicesOfType
相同的服務類型和域NSNetService
UITableView
列出服務,以允許用戶選擇服務 getInputStream:outputSteam:
didAcceptConnectionWithInputStream:outputStream:
被調用。 但是,這不會發生。 謝謝你的幫助!
問題是必須從接受連接的一側調用didAcceptConnectionWithInputStream:outputStream:
服務可用后,您致電獲取流
[service getInputStream:&istream outputStream:&ostream]
一旦這發生在接收請求的一方,委托方法
- (void)netService:(NSNetService *)sender didAcceptConnectionWithInputStream:(NSInputStream *)inputStream outputStream:(NSOutputStream *)outputStream
將被稱為
以我的經驗,並不是導致客戶端上調用didAcceptConnectionWithInputStream:outputStream:
的客戶端上調用getInputStream:outputStream:
的行為。
在客戶端上,在調用getInputStream:outputStream:
,您的客戶端需要在調用didAcceptConnectionWithInputStream:outputStream:
之前調用[inputStream open]
和[outputStream open]
。
這都是惰性初始化的一部分。
調用getInputStream:outputStream:
將為您提供兩個可以立即使用的非常不錯的NSStreams。 那么,說,您想寫一些數據嗎? 首先,打開寫入流...
BAM! netService:didAcceptConnectionWithInputStream:outputStream:
被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.