Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec les sockets

1 réponse
Avatar
john.ambou
Bonjour,

Je developpe une petite application qui doit, par l'intermediaire d'une
liaison ethernet, =E9changer des fichiers.
J'utilise ainsi des sockets avec une lecture du fichier juste avant,
voici mon code source :



Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long,
ByVal hTemplateFile As Long) As Long


Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long,
lpbuffer As Any, ByVal nNumberOfBytesToRead As Long,
lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long


Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long


Public Const FILE_SHARE_READ =3D &H1
Public Const GENERIC_READ =3D &H80000000
Public Const FILE_ATTRIBUTE_NORMAL =3D &H80


Public Const OPEN_EXISTING =3D 3
Public Const OPEN_ALWAYS =3D 4



Public Sub MyReadFile(NewFile As String, Taille As Long)
Dim sec As SECURITY_ATTRIBUTES
Dim h1 As Long
Dim ReadBuffer As String
Dim BytesRead As Long
Dim rc As Long
Dim paquet As Long
paquet =3D 1024
Dim Nbr_lu As Long
Dim CR As Long
Dim wsadata As WSA_DATA
Dim sock As Long
Dim CR1 As Long
Dim Result As String
Dim Nbr_total As Long
Nbr_total =3D 0

sec.bInheritHandle =3D True
sec.lpSecurityDescriptor =3D 0
sec.nLength =3D Len(sec)


h1 =3D CreateFile(NewFile, GENERIC_READ, 0, sec, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL, 0)

CR =3D WSAStartup(&H101, wsadata)
If CR <> 0 Then
MsgBox "Mauvaise version de Winsock.dll"
Exit Sub
Else: MsgBox ("WSA ok")
End If



sock =3D Socket(AF_INET, SOCK_STREAM, 0)
If sock < 0 Then
MsgBox "Erreur sur la creation du socket =3D " & WSAGetLastError()
FermerSocket sock
Exit Sub
End If


rmtserver.sin_family =3D AF_INET
rmtserver.sin_port =3D htons(8686)
rmtserver.sin_addr.S_addr =3D inet_addr("127.0.0.1")
rmtserver.sin_zero(0) =3D 0

CR =3D connect(sock, rmtserver, Len(rmtserver))
If CR < 0 Then
MsgBox "Erreur sur Connect : " & WSAGetLastError()
FermerSocket sock
Exit Sub
End If

If CR =3D 0 Then MsgBox ("Connexion ok")

While (Nbr_total < Taille)
rc =3D ReadFile(h1, ReadBuffer, paquet, Nbr_lu, 0)
CR1 =3D send(sock, ReadBuffer, paquet, 0)
Nbr_total =3D Nbr_total + Nbr_lu
Wend

CloseHandle (h1)

Result =3D closesocket(sock)
If Result =3D SOCKET_ERROR Then
MsgBox "Erreur sur la fermeture du socket"
End If
End Sub

Voyez vous une/des erreur(s) dans mon programme ?
Est t-il possible de m=E9langer deux langage de programmation c'est a
dire de faire un client en VB et un serveur en C++ ?

Merci de votre aide=20
Johnson

1 réponse

Avatar
Jean-marc
a écrit :

Bonjour,



Hello,

Je developpe une petite application qui doit, par l'intermediaire d'une
liaison ethernet, échanger des fichiers.
J'utilise ainsi des sockets avec une lecture du fichier juste avant,
voici mon code source :



<snip le code>
Voyez vous une/des erreur(s) dans mon programme ?



Non, cela semble tout à fait correct. Je n'ai pas testé ni même
exécuté, mais à priori, cela semble tout à fait ok.

Est t-il possible de mélanger deux langage de programmation c'est a
dire de faire un client en VB et un serveur en C++ ?



Bien sur, cela ne pose aucun problème. Le client et le serveur sont
tout à fait indépendants, la seule chose qu'ils ont en commun, c'est
de partager le protocole. Exemple trivial: un serveur HTTP en C++ ou en
Java et des clients en VB, un serveur FTP sous Unix écrit en C, un
client FTP en VB, un serveur HTTP en VB (héhé) et des browsers en C++
ou en Java!

--
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_' ;