Probleme de socket sous vb.net [Résolu]

cs_Yossi 40 Messages postés mardi 11 mars 2003Date d'inscription 5 septembre 2006 Dernière intervention - 9 mai 2006 à 13:11 - Dernière réponse : cs_Yossi 40 Messages postés mardi 11 mars 2003Date d'inscription 5 septembre 2006 Dernière intervention
- 10 mai 2006 à 12:44
Bonjour,

j'essaye d 'envoyer un message par un socket mais j'ai le message "une requete d'envoi ou de réception 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" alors que la connexion se fait (je la controle par le mode débogage).
j'ai la procédure socketreception qui se lance au lancement de l'application ( par l'intermédiaire d'un thread) :

t = New Thread(AddressOf socketReception)
t.Start


... et socketenvoi au click d'un bouton.

voici les procédures :

Sub socketReception()

Try
dim s as New Socket ( AddressFamily.InterNetwork ,SocketType.Stream, ProtocolType.Tcp)
Dim ipAdressServer As IPAddress =IPAddress.Parse(dns.GetHostAddresses(Dns.GetHostName())(0).ToString)
s.Bind(New IPEndPoint(ipAdressServer,ipPort))
s.Listen(1)
s.Accept()

Dim ret As Integer=1
Dim rbuf(1024) As Byte
Dim chaine As New system.Text.StringBuilder

While ( ret= s.Receive( rbuf,0,1024,SocketFlags.None))>0
chaine.Append(system.Text.Encoding.ASCII.GetString(rbuf,0,ret))

End While
msgbox(chaine)


Catch ex As Exception
msgbox(ex.Message)

End Try

Sub socketEnvoi()
Try

dim s as New Socket ( AddressFamily.InterNetwork ,SocketType.Stream, ProtocolType.Tcp)
Dim ep As New IPEndPoint(IPAddress.Parse(ipAdresse.text),ipPort)
s.Connect(ep)

'envoi
Dim donnees As String="salut ca va tu vas bien"
Dim buffer1 As Byte() = System.Text.Encoding.ASCII.GetBytes(donnees)

s.Send( buffer1 ,0, buffer1.Length , SocketFlags.None)

Catch ex As Exception

msgbox(ex.Message.ToString)
End Try

j'ai par ailleurs les déclarations suivantes dans un module:

Public ipPort as Integer = 4000

Merci de vos réponses.
Afficher la suite 

5 réponses

Meilleure réponse
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 9 mai 2006 à 13:46
3
Merci
Bonjour

s.Accept() te retourne un nouveau socket, c'est lui que tu doit utiliser.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

cs_Yossi 40 Messages postés mardi 11 mars 2003Date d'inscription 5 septembre 2006 Dernière intervention - 9 mai 2006 à 19:20
0
Merci
j'ai essayé. ca ne fonctionne toujours pas...
ya pas autre chose à faire selon toi. ???
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 10 mai 2006 à 09:52
0
Merci
Bonjour

ça donne quoi ton code ? c'est étonnant.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
cs_Yossi 40 Messages postés mardi 11 mars 2003Date d'inscription 5 septembre 2006 Dernière intervention - 10 mai 2006 à 12:41
0
Merci
Sub socketReception()

Try
dim s as New Socket ( AddressFamily.InterNetwork ,SocketType.Stream, ProtocolType.Tcp)
Dim ipAdressServer As IPAddress =IPAddress.Parse(dns.GetHostAddresses(Dns.GetHostName())(0).ToString)
s.Bind(New IPEndPoint(ipAdressServer,ipPort))
s.Listen(1)
dim s2 as Socket= s.Accept()

Dim ret As Integer
Dim rbuf(1024) As Byte
Dim chaine As New system.Text.StringBuilder


ret= s2.Receive(rbuf,0,1024,SocketFlags.None)
'msgbox(ret)
chaine.Append(system.Text.Encoding.ASCII.GetString(rbuf,0,ret))

msgbox(system.Text.Encoding.ASCII.GetString(rbuf,0,ret))



Catch ex As Exception
msgbox(ex.Message)

End Try


End Sub

Sub socketEnvoi()
Try

dim s as New Socket ( AddressFamily.InterNetwork ,SocketType.Stream, ProtocolType.Tcp)
Dim ep As New IPEndPoint(IPAddress.Parse(ipAdresse.text),ipPort)
s.Connect(ep)

'envoi
Dim donnees As String="salut monde"
Dim buffer1 As Byte() = System.Text.Encoding.ASCII.GetBytes(donnees)
s.Send( buffer1 ,0, buffer1.Length , SocketFlags.None)


s.Shutdown(SocketShutdown.Send)
Catch ex As Exception

msgbox(ex.Message.ToString)
End Try
cs_Yossi 40 Messages postés mardi 11 mars 2003Date d'inscription 5 septembre 2006 Dernière intervention - 10 mai 2006 à 12:44
0
Merci
finalement ca marche avec ce code. Je sais pas pourquoi ca marchait pas avant.peut etre le fait que je change de réseau....

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.