2009-07-31 6 views
3

Je me demandais si quelqu'un connaissait une pile combinée Bonjour/TCP Objective-C, ce qui me permettrait d'oublier la gestion des sockets, des services de diffusion, etc. et de me laisser simplement héberger un service et/ou obtenir une liste des services existants et se connecter à un. Ensuite, continuez simplement en envoyant des messages soit à des clients spécifiques du côté serveur ou au serveur d'un client.Objective-C Bonjour/TCP Stack

Je présume que tous les messages reçus et/ou les services découverts me seraient envoyés via des méthodes déléguées et que le reste du travail sale serait à la pile.

Je me rends compte que ce n'est pas si difficile à mettre en œuvre et j'en ai déjà fait, mais il serait beaucoup plus logique d'utiliser un framework mature.

Points supplémentaires si c'est compatible iPhone.

Répondre

4

Je dirais "faites-le vous-même". Si vous ne pensez pas que les exigences que vous avez énumérées dans la question changeront, alors une implémentation simple mais bien testée d'un serveur de socket + netservices et d'un wrapper pour socket + flux se fera très bien - vous pourriez même pas besoin d'un «cadre» en soi.

J'ai mis en œuvre quelque chose de similaire pour un tutorial et je l'ai utilisé dans un certain nombre de projets différents jusqu'à présent. Vous regardez environ 200 lignes de code pour un serveur socket TCP, et environ 300 lignes pour une classe Connection (avec des délégués et tout ça).

+0

Cela m'a vraiment fait bouger dans la bonne direction. Ensuite, j'ai également découvert MYNetwork dans votre section commentaires: http://bitbucket.org/snej/mynetwork/wiki/Home Fondamentalement fait tout ce que j'ai demandé et vient même avec un protocole de communication (facultatif). –

0

Qu'en est-il de l'utilisation du NSNetServices intégré à l'iPhone et à l'OSX? Cela fait tout le travail de publication/abonnement aux services Bonjour. Bien sûr, si vous publiez un service, vous avez besoin d'un socket à communiquer, et en fonction du protocole que vous utilisez, la façon dont vous gérez les messages entrants (et s'il y a des réponses, etc.) signifie que vous devez avoir une connaissance a priori de ce qu'est cette infrastructure de messagerie.

Si vous ne pouvez même pas vous soucier d'écrire cela, alors héberger quelque chose sur ce protocole de facto, HTTP, est probablement la voie à suivre. Vous pouvez simplement héberger votre propre mini serveur Web sur l'appareil et laisser les requêtes HTTP parler. Mais la mise en œuvre du service est orthogonale à la découverte de ce service.

+0

Pas vraiment ce que j'avais en tête. Ce que je voulais dire, c'est une sorte de classe/framework qui prendrait soin de tous les trucs TCP de bas niveau et les lierait avec Bonjour (pas vraiment un problème, j'utilise NSNetServices pour le moment).Je recevrais toujours les données brutes et répondrais au besoin. L'idée serait simplement que le framework utilise bonjour pour découvrir le serveur puis créer un canal de communication sans que je doive m'inquiéter de l'initialisation des sockets, de la mise en file d'attente des lectures pour eux et ainsi de suite. Selon toute vraisemblance, quelque chose comme ça existe. –

+0

Bon, comme je l'ai dit, vous pouvez utiliser un serveur HTTP pour gérer les couches de protocole et de communication, et vous y connecter. Il existe plusieurs exemples dans l'exemple de code Developer que vous pouvez adapter pour faire de même. – AlBlue

0

Il existe ConnectionKit, ce qui facilite grandement la communication via FTP, HTTP, SFTP, WebDAV et Amazon S3. Il ne supporte pas l'iPhone directement, puisque Cocoa est l'une de ses dépendances, mais j'imagine que c'est portable. Je ne suis pas sûr si cela serait utile dans votre cas, mais je pensais que je le lancerais juste au cas où.

0

Pourquoi ne pas utiliser AsyncSocket? Je ne l'ai pas utilisé personnellement, mais il semble être le choix parfait pour vous.

+0

C'est une bibliothèque sympa, mais il y a encore beaucoup de déconner. –

1

Découvrez l'exemple d'application WiTap d'Apple pour iPhone. Beaucoup des structures que vous demandez existent déjà là. Vous pouvez le trouver hors du iPhone Dev Center.

3

On dirait que vous recherchez le GameKit Framework inclus dans le SDK iPhone. GameKit, via GKSession, fournit exactement ce que vous cherchez. Il y a beaucoup de documentation là-bas, mais the official Apple guide est un bon endroit pour commencer.

Questions connexes