Probleme de socket sous vb.net

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

Messages postés
14845
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 janvier 2022
160
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
Messages postés
40
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
5 septembre 2006

j'ai essayé. ca ne fonctionne toujours pas...
ya pas autre chose à faire selon toi. ???
0
Messages postés
14845
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 janvier 2022
160
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
Messages postés
40
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
5 septembre 2006

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
Messages postés
40
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
5 septembre 2006

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