Problème Winsock

zzmanshow Messages postés 41 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 mars 2010 - 17 mars 2010 à 18:22
zzmanshow Messages postés 41 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 mars 2010 - 18 mars 2010 à 12:08
Bonjour à toutes et à tous,

J'explique un petit peu l'interface de mon logiciel et ensuite mon problème.

TOut d'abord, je créer un FORM qui se nomme "Serveur" qui lui possède un controle Winsock.

Je créer un nouveau projet (appelé "Client") avec un nouveau FORM qui comporte également un controle Winsock.

Sur le client, le controle Winsock à pour code :
winsock.Connect "192.168.0.1", 12666
winsock.SendData (id)


Ce code à donc pour but d'envoyer au FORM avec le winsock ouvert une donnée qui sera retranscrit sur le label nommé "id".

Ca fonctionne parfaitement en local donc.

Maintenant, passons au problème :

Je souhaite faire la même chose, mais cette fois-ci, je vais utilisé mon IP public ce qui transforme la parcelle de code ci-dessus en :
winsock.Connect "x.x.x.x", 12666 
winsock.SendData (id)


' les x sont bien entendu remplacés par mon IP public.

Le problème est, que, cette fois ci, cela ne marche pas...

Je me suis penché sur mon firewall en le désactivant temporairement mais cela ne fonctionne toujours pas...

Question : Quelqu'un a t-il un tuyau à me filer car je vois pas du tout là ou ca coince.....

(Si j'ai mal expliqué la situation, n'hésitez pas à me le faire remarquer pour que je puisse expliquer le problème plus clairement :))

Merci d'avance amis programmeur :)

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 mars 2010 à 00:19
Salut
Techniquement, tu ne peux pas émettre et recevoir sur la même adresse IP.
Normal donc que cela ne fonctionne pas si tu tentes de te connecter à ta propre adresse IP public.
Mais si cela fonctionne avec ton IP locale, pas de souci, ça marchera aussi depuis ton adresse IP public, sous réserve que ton parefeu ET ton routeur (régles NAT) aient bien les ports ouverts (ports serveur, côté client, rien à faire)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 mars 2010 à 00:20
PS : Si tu te connectes à une IP public, cela peut demander quelques millisecondes :
Pense à tester le State de ta connexion avant de vouloir lui envoyer quelque chose.
Voir les multiples exemples présents parmi les sources du site.
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
18 mars 2010 à 10:18
salut
Pense à tester le State de ta connexion avant de vouloir lui envoyer quelque chose


si tu connecte ton socket et tu envoi directement les données pourquoi ne pas utiliser l'évenement winsock_connect ?

sinon un autre moyen peut être que sa peut t'aider :
winsock.Connect "x.x.x.x", 12666 
'tan que le winsock n'est pas prêt on retourne la main à windows 
while winsock.state <> 7
doevents
wend
winsock.SendData (id)



Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
zzmanshow Messages postés 41 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 mars 2010
18 mars 2010 à 12:08
Merci pour les informations que tu m'as donné Jack :)

Je testerai cela d'une autre IP :)

Je tiens également à te remercier Claiyah pour le code que tu ma présentés..je vais regarder ca de très prêt et je te ferais un retour via ce topic :)

Merci encore Jack et Claiyah pour vos réponses :)
0