ASYNC TCP SOCKET

leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007 - 4 déc. 2007 à 23:14
Clecle0401 Messages postés 21 Date d'inscription samedi 14 septembre 2002 Statut Membre Dernière intervention 10 juin 2009 - 22 oct. 2008 à 20:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40792-async-tcp-socket

Clecle0401 Messages postés 21 Date d'inscription samedi 14 septembre 2002 Statut Membre Dernière intervention 10 juin 2009
22 oct. 2008 à 20:50
Je ne sais pas, inscrire quelque chose, afficher un message, appeler une fonction etc..

Quelque chose qui me prouve par exemple que je suis bien connecté :)
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
19 oct. 2008 à 18:53
Comment ça faire un retour à la console ?
Clecle0401 Messages postés 21 Date d'inscription samedi 14 septembre 2002 Statut Membre Dernière intervention 10 juin 2009
19 oct. 2008 à 18:51
Comment, par exemple, faire un retour à la console quand l'évènement Connected est appelé ?
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
5 oct. 2008 à 13:46
J'ai trouvé je fais connect et de suite send, mais EndConnect entre les 2 n'a pas été exécuté donc je dois faire Send dans l'évenement connected.
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
5 oct. 2008 à 13:33
J'ai toujours cette erreur, même sur une IP d'un pote avec le port MSN :

Une requête d'envoi ou de réception de données n'a pas été autorisée car le socket n'est pas connecté et (lors de l'envoi sur un socket datagramme en utilisant un appel sendto) aucune adresse n'a été fournie.

SocketError : NotConnected
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
5 oct. 2008 à 10:12
J'ai trouvé l'erreur : T'a utiliser Resolve de DNS j'ai remplacé par Net.IPAddress.Parse(Hostname)
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
5 oct. 2008 à 10:06
Souvent il dit "Hote inconnu" alors que je met une adresse HTTP et port 125

Et quand je met une IP il met adresse non compatible avec le protocole.

Je trouve pas ça normal.
werdDomain Messages postés 60 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 novembre 2011
5 oct. 2008 à 09:09
bon, je ne sait si le probleme est résolut, mais je peut vous éclairé a propos des "Delegate" ...
Il est possible, avec un Delegate, de faire une opperation Inter-Thread en règle :P
voici comment :

'on crée un sub ...
private sub MONSUB(str as string)

end sub

'on declare notre "Delegate" :
private Delegate sub MonDelegate(Str as string)
'On crée une instance de ce delegate et on le refere a MONSUB
dim DelegateInstance as new MonDelegate(AdressOf MONSUB)
'on declare un sub "Public" sur le form :
public sub Action(Str as string)
'on vérifie que l'Invoke est aubligatoire
if InvokeRequired then
'on invoke le Delegate a avec le thread du form(ME)
ME.invoke(DelegateInstance, new object() {str})
else
DelegateInstance(str)
end if
end sub

donc, pour résumé... Quand on feras appele au sub "Action()" a partir d'un autre thread que le form, il vas invoker le "Delegate" a partir du thread du form.
Invoke, c'est comme si on demenderais au Thread qui a crée le form, d'executer ce sub a la place de l'autre thread.
De cette façon, vous n'obtienderez plus d'erreur
"Opperation Inter-Thread invalide" ou
"impocible d'acceder au controle a partir d'un thread autre que celui qu'il la crée"
Clecle0401 Messages postés 21 Date d'inscription samedi 14 septembre 2002 Statut Membre Dernière intervention 10 juin 2009
3 juil. 2008 à 15:00
Comment, par exemple, faire un retour à la console quand l'évènement Connected est appelé ?
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
26 juin 2008 à 20:04
C'est un problème connu. En fait l'évènement DataArrival est déclanché par un callback. Ce callback est un thread différent du thread qui gère ton interface, ta form. Par mesure de sécurité, il est interdit à un thread d'exécuter du code dans un autre, d'où l'erreur que tu as.

De ce que j'ai lu sur Internet, il faut utiliser des delegate. J'ai donc mis à jour mon code en les intégrant mais ça ne fonctionne pas (c'est pour ça que j'ai pas mis la MAJ ici). Y'a bien ce code b@z socket qui a trouvé un moyen de finter ça et les gens semblent contents de ce code, mais je l'ai trouvé un peu trop chaotique, trop complexe pour l'usage auquel il est destiné si tu veux. Je continue donc à chercher une meilleur solution.

Si quelqu'un sait comment résoudre ce problème, je suis intéressé.
Utilisateur anonyme
25 juin 2008 à 19:21
J'ai un message d'erreur sur l'événement DataArrival :
Opération inter-threads non valide : le contrôle 'logs' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.

Sous Visual 2005 - saurais-tu d'où ça vient ?

Merci d'avance.
tassali Messages postés 5 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 27 mai 2008
27 mai 2008 à 12:33
super j'ai testé ce code et il marche à merveille
je voudrais savoir comment faire la meme chose en UDP
leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007
4 déc. 2007 à 23:14
Code parfait, bref et très concret, manque un peu de commentaire peut etre sur le côté asynchrone !

Bon travail et merci j'ai enfin pu faire marcher ce *** de composant ...
Rejoignez-nous