OVH Cloud OVH Cloud

Problème Winsock VB5

2 réponses
Avatar
nwjb
Bonjour,

Je reprends une application en VB5 (dont je ne suis pas un spécialiste)
pour
ajouter une connexion cliente à un serveur via winsock. Le serveur est
hébergé sur
une autre machine et fonctionne avec d'autres applications).

Le client envoie simplement une demande (chaîne de caractères) et le
serveur
répond une chaîne de caractères (parfois binaire).

J'ai créé un petit projet pour faire fonctionner la connexion:

J'ai donc
.ajouté un contrôle winsock à la fenêtre du projet
.mis le code suivant à l'ouverture
------------------------------------------
Private Sub Form_Load()
Dim serpatRep As String
Dim serpatip As String
serpatip = "172.31.1.1"
Winsock1.Close
Winsock1.LocalPort = 0
Winsock1.RemoteHost = serpatip
Winsock1.RemotePort = 3000
Winsock1.Connect
If Winsock1.State = sckConnected Then
serpatRep = ""
Winsock1.SendData "CX@" & SerpatApp & "@" & SerpatPwd & "@" &
SerpatUsr & "@ASCII"
DoEvents
DoEvents
If serpatRep <> "000" Then
serpatip = ""
End If
Else
serpatip = "" 'marche pas
End If

End Sub
-------------------------------------
.mis le code suivant sur le contrôle Winsock:
--------------------------------------
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim recu As Byte
recu = Space(bytesTotal)
Winsock1.GetData recu, vbByte + vbArray, bytesTotal
serpatRep = serpatRep & recu
End Sub
---------------------------------------
.ce qui se passe:
.la connexion s'effectue correctement
.le Senddata s'effectue correctement (vu dans le log du serveur)
.le DataArrival n'est jamais déclenché (alors que le serveur a bien
répondu) (j'ai mis
un point d'arrêt où je ne passe jamais). La propriété BytesReceived
reste à 0.
Après des recherches sur Google: j'ai alloué la variable de réception (du
genre recu=space(...) , ajouté les Doevents, cela n'a pas changé. Faut-il
faire quleque chose de particulier pour
activer les événements des sockets ou ???

Merci de toute idée..
--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering

2 réponses

Avatar
Jean-Marc
"nwjb" a écrit dans le message de
news:
Bonjour,

Je reprends une application en VB5 (dont je ne suis pas un spécialiste)
pour
ajouter une connexion cliente à un serveur via winsock. Le serveur est
hébergé sur
une autre machine et fonctionne avec d'autres applications).

Le client envoie simplement une demande (chaîne de caractères) et le
serveur
répond une chaîne de caractères (parfois binaire).

J'ai créé un petit projet pour faire fonctionner la connexion:

J'ai donc
.ajouté un contrôle winsock à la fenêtre du projet
.mis le code suivant à l'ouverture
------------------------------------------
Private Sub Form_Load()
Dim serpatRep As String
Dim serpatip As String
serpatip = "172.31.1.1"
Winsock1.Close
Winsock1.LocalPort = 0
Winsock1.RemoteHost = serpatip
Winsock1.RemotePort = 3000
Winsock1.Connect
If Winsock1.State = sckConnected Then
serpatRep = ""
Winsock1.SendData "CX@" & SerpatApp & "@" & SerpatPwd & "@" &
SerpatUsr & "@ASCII"
DoEvents
DoEvents
If serpatRep <> "000" Then
serpatip = ""
End If
Else
serpatip = "" 'marche pas
End If

End Sub
-------------------------------------
.mis le code suivant sur le contrôle Winsock:
--------------------------------------
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim recu As Byte
recu = Space(bytesTotal)
Winsock1.GetData recu, vbByte + vbArray, bytesTotal
serpatRep = serpatRep & recu
End Sub
---------------------------------------
.ce qui se passe:
.la connexion s'effectue correctement
.le Senddata s'effectue correctement (vu dans le log du serveur)
.le DataArrival n'est jamais déclenché (alors que le serveur a bien
répondu) (j'ai mis
un point d'arrêt où je ne passe jamais). La propriété BytesReceived
reste à 0.
Après des recherches sur Google: j'ai alloué la variable de réception (du
genre recu=space(...) , ajouté les Doevents, cela n'a pas changé. Faut-il
faire quleque chose de particulier pour
activer les événements des sockets ou ???



Hello,

ajoute simplement vbCrLf à la fin de ton SendData.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
nwjb
Le Fri, 14 Oct 2005 13:51:30 +0200, Jean-Marc
a écrit:

"nwjb" a écrit dans le message de
news:
Bonjour,

Je reprends une application en VB5 (dont je ne suis pas un spécialiste)
pour
ajouter une connexion cliente à un serveur via winsock. Le serveur est
hébergé sur
une autre machine et fonctionne avec d'autres applications).

Le client envoie simplement une demande (chaîne de caractères) et le
serveur
répond une chaîne de caractères (parfois binaire).

J'ai créé un petit projet pour faire fonctionner la connexion:

J'ai donc
.ajouté un contrôle winsock à la fenêtre du projet
.mis le code suivant à l'ouverture
------------------------------------------
Private Sub Form_Load()
Dim serpatRep As String
Dim serpatip As String
serpatip = "172.31.1.1"
Winsock1.Close
Winsock1.LocalPort = 0
Winsock1.RemoteHost = serpatip
Winsock1.RemotePort = 3000
Winsock1.Connect
If Winsock1.State = sckConnected Then
serpatRep = ""
Winsock1.SendData "CX@" & SerpatApp & "@" & SerpatPwd &
"@" &
SerpatUsr & "@ASCII"
DoEvents
DoEvents
If serpatRep <> "000" Then
serpatip = ""
End If
Else
serpatip = "" 'marche pas
End If

End Sub
-------------------------------------
.mis le code suivant sur le contrôle Winsock:
--------------------------------------
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim recu As Byte
recu = Space(bytesTotal)
Winsock1.GetData recu, vbByte + vbArray, bytesTotal
serpatRep = serpatRep & recu
End Sub
---------------------------------------
.ce qui se passe:
.la connexion s'effectue correctement
.le Senddata s'effectue correctement (vu dans le log du serveur)
.le DataArrival n'est jamais déclenché (alors que le serveur a bien
répondu) (j'ai mis
un point d'arrêt où je ne passe jamais). La propriété BytesReceived
reste à 0.
Après des recherches sur Google: j'ai alloué la variable de réception
(du
genre recu=space(...) , ajouté les Doevents, cela n'a pas changé.
Faut-il
faire quleque chose de particulier pour
activer les événements des sockets ou ???



Hello,

ajoute simplement vbCrLf à la fin de ton SendData.


Merci, mais non: les données échangées sont binaires et ne comportent pas
de crlf.
Par ailleurs le SendData fonctionne bien (le serveur reçoit d'ailleurs
bien les
données). C'est le GetData qui ne fonctionne pas..
--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering