2011-12-12 3 views
2

J'ai appris à programmer des prises, mais lorsque j'essaie d'écrire des codes, j'ai quelques problèmes. Le code fonctionne pour la connexion aux ordinateurs sur le même réseau local, mais lorsque je tente de me connecter à deux ordinateurs sur un réseau différent sur Internet, je n'ai pas pu. Est-ce dû au programme ou est-ce en raison de la sécurité du réseau?apprentissage de programmation socket

Où puis-je trouver plus d'informations à ce sujet si je veux que les applications communiquent sur Internet. Je pensais faire un programme de chat pour que je comprenne mieux mais je ne peux même pas faire communiquer le programme sur internet!

Editer: Eh bien le port que j'utilise est 6892. C'est juste un port aléatoire. Je suis un peu en train d'apprendre ces choses.

+4

La boule de cristal est brumeuse aujourd'hui. S'il vous plaît montrer du code ou au moins quelques détails sur les ports que vous utilisez, vos paramètres réseau, etc –

+0

Vous devez garder à l'esprit que la plupart des ports sur Internet sont bloqués par des pare-feu, essayez de connecter deux hôtes où vous êtes capable pour contrôler ceux-ci. –

+0

mais comment passez-vous le pare-feu? comme la façon dont les applications actuelles de chat devraient passer à travers le pare-feu droit? – mma1480

Répondre

3

Si vous utilisez des sockets natifs et que vous êtes derrière un pare-feu, cela échouera définitivement. Votre pare-feu sera presque certainement configuré pour autoriser uniquement le port 80, pour http, et le port 443 (?) Pour https.

+0

est-ce que cela signifie que je dois ouvrir un port sur le pare-feu ou faire une sorte de redirection de port? – mma1480

+0

J'éviterais d'ouvrir des ports inutiles, surtout si vous n'êtes pas sûr de ce que vous faites. C'est un moyen infaillible de se faire pirater. Mais oui, vous pouvez le faire. La liste des ports standards est ici http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Comme le mentionne Clyfe ci-dessous, vous pourriez même ne pas être en mesure de vous connecter, même si vous avez ouvert les bons ports. Vous pourriez envisager le tunneling http, par exemple. – Barry

+0

Vous devrez ouvrir le port que vous utilisez sur n'importe quel pare-feu entre les deux extrémités du lien socket. – ChrisBD

2

Dans certaines topologies de réseau de couche 3, les connexions entre les ordinateurs ne sont pas bidirectionnelles et il est nécessaire d'assurer la médiation de la communication via des techniques telles qu'un courtier de fédération.

Une station distante peut ne pas s'adresser directement à votre ordinateur, il ne peut atteindre que votre passerelle, en fonction de la configuration.

0

L'un ou les deux ou vos ordinateurs sont-ils connectés à un réseau local? S'ils ont des adresses IP commençant par 192.168, ils sont dans un réseau local.

Vous pouvez également utiliser http://whatismyipaddress.com/ pour vérifier si l'adresse IP affichée est la même avec l'adresse IP que vous voyez sur vos ordinateurs, mais n'oubliez pas de supprimer tous les proxys.

Si l'ordinateur de destination se trouve dans un réseau local ou si l'adresse IP affichée sur le site Web diffère de celle affichée sur l'ordinateur, vous aurez un problème. Cette situation n'aurait rien à voir avec votre programme, mais vous devrez configurer vos réseaux. Vous devrez peut-être contacter votre gestionnaire de réseau pour le résoudre.

+0

oui quand les deux ordinateurs sont dans le réseau local, ils sont capables de communiquer. mais quand ils ne sont pas sur le même, le programme ne peut pas communiquer.C'est ce que j'essaie de comprendre: comment les faire communiquer quand ils ne sont pas sur le même réseau. – mma1480

+0

@ mma1480 En effet, l'adresse réseau locale ne peut pas être vue en dehors du réseau. Vous devez savoir quelle adresse est utilisée pour accéder au réseau local (généralement celle indiquée sur ledit site Web), et vous aurez besoin d'une redirection de port. Peut-être que cela peut aider: http://en.wikipedia.org/wiki/Port_forwarding. Mais la configuration du transfert net nécessite un privilège administratif pour gérer la configuration du réseau local. Vous devrez peut-être contacter votre gestionnaire de réseau. – fefe