2009-07-31 32 views
3

我想知道是否有人知道有一個組合的Objective-C Bonjour/TCP堆棧,這會讓我忘記管理套接字,廣播服務等,而是讓我只是託管一個服務和/或獲取現有服務的列表並連接到一個。然後繼續從服務器端發送消息到特定客戶端或從客戶端發送到服務器。Objective-C Bonjour/TCP Stack

我認爲任何收到的消息和/或發現的服務都會通過委託方法發送給我,而其餘的骯髒工作則由堆棧決定。

我意識到這並不是很難實現我自己,我已經完成了一些工作,但使用成熟的框架會更有意義。

如果它與iPhone兼容,則需要加分。

回答

4

我會說「自己動手」。

如果您不認爲問題中列出的要求會發生變化,那麼一個簡單但經過充分測試的套接字服務器+ netservices實現和套接字+流封裝將會很好 - 您可能會甚至不需要本身的「框架」。

我爲tutorial實現了類似的東西,並且迄今爲止已經在幾個不同的項目中使用它。您正在查看TCP套接字服務器的大約200行代碼,以及大約300行的Connection類(帶有代理以及所有這些代碼)。

0

如何使用內置於iPhone和OSX的NSNetServices?這完成了發佈/訂閱Bonjour服務的所有工作。當然,如果你發佈一個服務,你需要一個與之通信的套接字,並且根據你使用的協議,你處理傳入消息的方式(以及是否有響應等)意味着您必須先知道該消息傳遞基礎架構的一些知識。如果你甚至不能寫出這樣的話,那麼在事實上包含所有協議的東西HTTP,可能是前進的方向。您可以在設備上託管自己的迷你網絡服務器,並讓HTTP請求進行通話。但是服務的實現與該服務的發現是正交的。

+0

不是我真正想到的。我的意思是某種類型/框架,它會照顧所有TCP低級別的東西,並將它與Bonjour結合在一起(實際上這不是問題,我現在正在使用NSNetServices)。我仍然會收到原始數據並根據需要進行響應。 這個想法只是讓框架使用bonjour來發現服務器,然後創建一個通信通道,而不必擔心初始化套接字,爲它們排隊讀取等等。 很可能存在這樣的情況。 – 2009-08-10 11:13:42

+0

正如我所說的 - 您可以使用HTTP服務器來處理協議和通信層,並將其自身掛鉤。開發者示例代碼中有幾個例子可以適應這種情況。 – AlBlue 2009-08-12 08:26:09

0

ConnectionKit,它可以使通過FTP,HTTP,SFTP,WebDAV和Amazon S3進行通信更容易。它不直接支持iPhone,因爲Cocoa是它的依賴之一,但我想它是可移植的。我不確定這是否會對你的案件有任何用處,但我認爲我會把它扔在那裏以防萬一。

0

怎麼樣使用AsyncSocket。我沒有親自使用它,但它似乎是您的最佳選擇。

+0

這是一個很不錯的圖書館,但還是有一些低調的混亂。 – 2009-08-14 08:19:14

1

查看Apple的iPhone的WiTap示例應用程序。你要求的許多結構已經存在。你可以從iPhone Dev Center中找到它。

3

聽起來像你正在尋找包含在iPhone SDK中的GameKit框架。 GameKit通過GKSession提供了你正在尋找的東西。這裏有很多文檔,但the official Apple guide是一個很好的開始。