Probleme de socket sous vb.net

Résolu
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 9 mai 2006 à 13:11
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 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.

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 mai 2006 à 13:46
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)
3
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
9 mai 2006 à 19:20
j'ai essayé. ca ne fonctionne toujours pas...
ya pas autre chose à faire selon toi. ???
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 mai 2006 à 09:52
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)
0
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
10 mai 2006 à 12:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
10 mai 2006 à 12:44
finalement ca marche avec ce code. Je sais pas pourquoi ca marchait pas avant.peut etre le fait que je change de réseau....
0
Rejoignez-nous