Je travaille sur un projet de messagerie instantanée P2P, comme ichat, mais juste pour LAN.
J'utilise la bibliothèque jmdns pour la découverte de services, et je teste avec pidgin et je me connecte en tant qu'utilisateur Bonjour. comme jusqu'ici, le service _presence._tcp.local. est bien découvert,
alors nous connaissons les informations de l'utilisateur dans le réseau local comme nom @ hôte: port, alors comment démarrer une conversation avec le client Bonjour?
J'ai regardé dans XMPP, mais il ne supporte pas P2P, mais je peux difficilement trouver la bibliothèque pour le jingle d'extension qui supporte P2P.
peut-être que je devrais utiliser SIP pour faire une conversation? mais le format de paquet est compatible avec Bonjour? ou je dois étudier la structure du paquet échangé?
Quelqu'un peut-il expliquer un peu comment fonctionne ichat pour LAN?
Merci beaucoup pour votre aimable aide!
comment démarrer une conversation avec client bonjour connaissant son nom @hôte: port?
Répondre
Je pense que vous êtes un peu confus.
Bonjour est un mécanisme pour trouver un service. Ce n'est pas pour communiquer avec un service. Une fois que vous avez trouvé l'information name @ host: port, vous avez terminé avec Bonjour.
L'étape suivante exigera que vous parliez un protocole que le service comprend. Le jeton _presence
dans la chaîne de service indique qu'il s'agit d'un service XMPP. Vous aurez besoin de parler de XMPP. Vous ne pouvez pas parler de SIP. Avez-vous essayé d'ouvrir une connexion XMPP à l'hôte et au port que vous avez trouvés?
Vous parlez de SIP et de Jingle. Ceux-ci sont utilisés pour configurer un appel audio ou vidéo. Si vous écrivez un programme de messagerie instantanée, vous n'avez pas besoin de le faire. XMPP seul est suffisant.
Si vous souhaitez prendre en charge l'audio ou la vidéo, vous aurez besoin de l'un de ces protocoles. Parce que le service que vous avez trouvé est un service XMPP, vous devrez utiliser Jingle. Si vous n'avez pas de bibliothèque qui parle Jingle, vous devrez écrire le code vous-même. Il n'y a rien dans les informations Bonjour qui identifie un service SIP, donc vous ne pouvez pas utiliser SIP - sauf si vous pouvez faire une requête Bonjour différente et trouver un service SIP.
Je déduis que vous travaillez en Java. La bibliothèque XMPP la plus populaire pour Java semble être Smack.
Vous pouvez utiliser SIP pour cela. MDNS sera votre mécanisme de découverte, alors vous utiliserez le SIP simple pour appeler, celui que vous avez appris l'URI que vous souhaitez appeler.
SIPSIMPLE SDK (http://sipsimpleclient.com) implémente cette fonctionnalité en chantant ce brouillon expiré: http://tools.ietf.org/html/draft-lee-sip-dns-sd-uri-03 cela pourrait être un bon début.
Fondamentalement, votre client générerait un URI comme sip: random_stuff @ ip: port, puis le publier avec un nom d'affichage en utilisant MDNS. L'application parcourt également MDNS pour les pairs sur le LAN: _sipuri._udp par exemple. Une fois que vous obtenez un URI, vous pouvez simplement composer en utilisant SIP.
Merci pour l'attention de tout le monde, maintenant j'ai trouvé quelque chose. XMPP ne prend pas en charge le mode P2P, prend uniquement en charge les clients clients-serveur. mais il existe une autre norme "XEP-0174: Messagerie sans serveur" qui convient au chat p2p dans un réseau local. DNS-SD + XEP-0174, ichat fonctionne de cette façon.
comme j'ai utilisé la bibliothèque smack, il ne supporte pas p2P; mais quelqu'un a fait quelques changements, voici le lien http://issues.igniterealtime.org/browse/SMACK-262.
Je n'ai pas essayé cette connexion XMPPLLConnection, j'ai regardé dans le code source de smack, il est basé sur la connexion socket. malheureusement, il n'y a pas de bibliothèque Java pour XEP-1074, donc je dois travailler sur le flux xml sur socket.
- 1. Obtenir l'objet ResolveInfo d'une activité en connaissant son nom?
- 2. Client de conversation avec GWT
- 3. Suppression d'un élément du tableau connaissant son nom
- 4. Bonjour Client IM
- 5. Java (Jsoup): Comment analyser http: // hôte: port
- 6. comment créer une instance de vue connaissant son identifiant?
- 7. hôte et servir « Bonjour tout le monde »
- 8. Drupal 6 connaissant son environnement actuel
- 9. Création d'un programme de conversation client-serveur
- 10. Création d'un client de conversation simple
- 11. Exécution d'un programme de conversation client-serveur
- 12. Comment tuer le processus en C++, ne connaissant qu'une partie de son nom
- 13. Puis-je créer une instance d'une classe à partir d'AS3 en connaissant simplement son nom?
- 14. comment supprimer le numéro de port/nom de l'application dans une machine hôte
- 15. Comment puis-je trouver mon URL MySQL, mon hôte, mon port et mon nom d'utilisateur?
- 16. Comment détecter un hôte serveur: port sur le réseau local?
- 17. Comment est-ce que je peux instancier un objet en ne connaissant que son nom?
- 18. Existe-t-il un moyen pour un programme client de conversation Java de trouver dynamiquement le serveur hôte?
- 19. Conversation personnalisée avec Sails.js
- 20. débuts avec ruby connaissant php
- 21. transfert hôte et client
- 22. Accès machine virtuelle au port Ethernet hôte
- 23. Sélectionnez une valeur en connaissant le nom de la colonne
- 24. Démarrer et arrêter un son avec Javascript
- 25. client a envoyé malformé tête hôte
- 26. Comment obtenir une image avec son nom et une extension?
- 27. port client Silverlight vérifier
- 28. Comment démarrer JBoss sur un port privilégié?
- 29. pourquoi http proxy est hôte + port
- 30. Client PostgreSQL - Comment le démarrer?
vous avez dit l'ouverture d'une connexion XMPP, ouais, c'est le problème que je me pose! Comment ? avec une connexion socket ou une bibliothèque appropriée qui ne me soucie pas du format du paquet? Merci pour votre réponse! – seaguest
Oh, c'est vrai. J'ai ajouté un lien vers une bibliothèque appelée Smack qui devrait vous aider. –
merci, mais en fait j'ai regardé en claquant, je sais que nous pouvons commencer une conversation avec les autres avec l'aide d'un serveur. mais maintenant je n'ai pas de serveur, c'est p2p, alors peut-on faire ce travail sans serveur? – seaguest