Type TCServerStatus m_ErrorCode As Long m_Info1 As Long m_Info2 As Long m_Status As Long m_Length As Long End Type
Public ServerStatus As TCServerStatus
--------------
en plus m_ErrorCode = 0 = NO_ERROR
Je ne recois aucune réponse si j'utilise Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Comment envoyer et recevoir une structure ??????????
merci
.
Zoury
Bonjour! :O)
Il est possible d'envoyer la structure d'un coup sous forme de tableau de Byte grace à l'api CopyMemory.. Voici exemple montrant comment envoyer/recevoir les données :
Ajouter ces déclarations dans le haut du module : '*** Private Type POINTAPI x As Long y As Long End Type
Private Declare Sub CopyMemory _ Lib "kernel32" _ Alias "RtlMoveMemory" _ ( _ ByRef pDst As Any, _ ByRef pSrc As Any, _ ByVal ByteLen As Long _ ) '***
Pour envoyer la structure '*** Dim by() As Byte Dim pt As POINTAPI
' initialise le point a envoyé pt.x = 4 pt.y = 5
' dimensionne le tableau de byte ReDim by(LenB(pt) - 1) As Byte
' copy le contenu du POINTAPI dans le tableau de byte Call CopyMemory(by(0), pt, LenB(pt))
' envoi les données au serveur Call wsClient.SendData(by) '***
Pour la relire '*** Private Sub wsServer_DataArrival(ByVal bytesTotal As Long)
Dim pt As POINTAPI Dim by() As Byte
' initialise le tableau de byte ReDim by(bytesTotal - 1) As Byte
' rempli notre tableau de byte avec les données reçues Call wsServer.GetData(by, vbByte + vbArray, bytesTotal)
' on copie les données dans notre structure Call CopyMemory(pt, by(0), bytesTotal)
' on imprime les valeurs de la structure Debug.Print pt.x, pt.y
a écrit dans le message de news:1a3bc01c44e1e$e918ab70$ Sauf erreur de ma part, je ne panse pas qu'il soit possible de recevoir la structure en une seule fois. If faut utiliser :
Type TCServerStatus m_ErrorCode As Long m_Info1 As Long m_Info2 As Long m_Status As Long m_Length As Long End Type
Public ServerStatus As TCServerStatus
--------------
en plus m_ErrorCode = 0 = NO_ERROR
Je ne recois aucune réponse si j'utilise Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Comment envoyer et recevoir une structure ??????????
merci
.
Bonjour! :O)
Il est possible d'envoyer la structure d'un coup sous forme de tableau de
Byte grace à l'api CopyMemory.. Voici exemple montrant comment
envoyer/recevoir les données :
Ajouter ces déclarations dans le haut du module :
'***
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long _
)
'***
Pour envoyer la structure
'***
Dim by() As Byte
Dim pt As POINTAPI
' initialise le point a envoyé
pt.x = 4
pt.y = 5
' dimensionne le tableau de byte
ReDim by(LenB(pt) - 1) As Byte
' copy le contenu du POINTAPI dans le tableau de byte
Call CopyMemory(by(0), pt, LenB(pt))
' envoi les données au serveur
Call wsClient.SendData(by)
'***
Pour la relire
'***
Private Sub wsServer_DataArrival(ByVal bytesTotal As Long)
Dim pt As POINTAPI
Dim by() As Byte
' initialise le tableau de byte
ReDim by(bytesTotal - 1) As Byte
' rempli notre tableau de byte avec les données reçues
Call wsServer.GetData(by, vbByte + vbArray, bytesTotal)
' on copie les données dans notre structure
Call CopyMemory(pt, by(0), bytesTotal)
' on imprime les valeurs de la structure
Debug.Print pt.x, pt.y
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:1a3bc01c44e1e$e918ab70$a101280a@phx.gbl...
Sauf erreur de ma part, je ne panse pas qu'il soit
possible de recevoir la structure en une seule fois.
If faut utiliser :
Il est possible d'envoyer la structure d'un coup sous forme de tableau de Byte grace à l'api CopyMemory.. Voici exemple montrant comment envoyer/recevoir les données :
Ajouter ces déclarations dans le haut du module : '*** Private Type POINTAPI x As Long y As Long End Type
Private Declare Sub CopyMemory _ Lib "kernel32" _ Alias "RtlMoveMemory" _ ( _ ByRef pDst As Any, _ ByRef pSrc As Any, _ ByVal ByteLen As Long _ ) '***
Pour envoyer la structure '*** Dim by() As Byte Dim pt As POINTAPI
' initialise le point a envoyé pt.x = 4 pt.y = 5
' dimensionne le tableau de byte ReDim by(LenB(pt) - 1) As Byte
' copy le contenu du POINTAPI dans le tableau de byte Call CopyMemory(by(0), pt, LenB(pt))
' envoi les données au serveur Call wsClient.SendData(by) '***
Pour la relire '*** Private Sub wsServer_DataArrival(ByVal bytesTotal As Long)
Dim pt As POINTAPI Dim by() As Byte
' initialise le tableau de byte ReDim by(bytesTotal - 1) As Byte
' rempli notre tableau de byte avec les données reçues Call wsServer.GetData(by, vbByte + vbArray, bytesTotal)
' on copie les données dans notre structure Call CopyMemory(pt, by(0), bytesTotal)
' on imprime les valeurs de la structure Debug.Print pt.x, pt.y
a écrit dans le message de news:1a3bc01c44e1e$e918ab70$ Sauf erreur de ma part, je ne panse pas qu'il soit possible de recevoir la structure en une seule fois. If faut utiliser :