Page 1 sur 1
[R] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 15:07
par Benji2011
Salut à tous, je viens me référer à vous après quelques recherches sur Google qui n'ont rien donné, voila mon code :
► Afficher le texte
Coté Client :
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
Opt("GUIOnEventMode", 1)
AutoItSetOption ("TrayAutoPause", 0)
Global Const $IpConnect = @IPAddress1
Global Const $PortConnect = 1245
Global Const $Boundary = @CRLF & '---------------------ole124' & @CRLF ;Séparateur
Global $Tout = ''
Global $Lecture = 0
Global $GUI = GUICreate("Client", 701, 446, 424, 138)
Global $DesktopPic = GUICtrlCreatePic("", 0, 0, 700, 382)
Global $Status = GUICtrlCreateEdit("", 0, 385, 700, 59, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "CloseClicked")
Func Status($texte)
_GUICtrlEdit_AppendText($Status, $texte & @CRLF)
EndFunc
Func CloseClicked()
Exit
EndFunc
$TCPS = TCPStartup()
$MainSocket = TCPConnect($IpConnect, $PortConnect)
If $MainSocket = -1 Then
MsgBox(0, 'Erreur', 'Erreur lancement client.')
Exit
EndIf
Status('Connexion au serveur...')
$i = 0
While 1
$recv = TCPRecv($MainSocket, 60000)
If $recv <> '' Then
If $recv == $Boundary Then
If FileExists('CaptureR.jpg') Then FileDelete('CaptureR.jpg')
Status('Ecriture...')
$file = FileOpen('CaptureR.jpg', 16 + 2)
FileWrite($file, StringToBinary($Tout))
FileClose($file)
$Tout = ''
Else
$Tout &= $recv
EndIf
EndIf
WEnd
Coté serveur :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#Include <ScreenCapture.au3>
Opt("GUIOnEventMode", 1)
AutoItSetOption ("TrayAutoPause", 0)
Global $GUI = GUICreate("Serveur", 701, 116, 377, 172)
Global $Status = GUICtrlCreateEdit("", 0, 0, 700, 114, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "CloseClicked")
Global Const $IpListen = @IPAddress1
Global Const $PortListen = 1245
Global Const $Boundary = @CRLF & '---------------------ole124' & @CRLF ;Séparateur
Func Status($texte)
_GUICtrlEdit_AppendText($Status, $texte & @CRLF)
EndFunc
Func CloseClicked()
Exit
EndFunc
$TCPS = TCPStartup()
$MainSocket = TCPListen($IpListen, $PortListen)
If $MainSocket = -1 Then
MsgBox(0, 'Erreur', 'Erreur lancement serveur')
Exit
EndIf
Status('Ecoute sur le port ' & $PortListen & '...')
While 1
$tempsocket = TCPAccept($MainSocket)
If $tempsocket >= 0 Then
Status('Client Connecté.')
ExitLoop
EndIf
WEnd
While 1
_ScreenCapture_Capture("Capture.jpg", 0, 0, 50, 50, 1)
$File = FileOpen('Capture.jpg', 16)
Status('Envoi...')
Sleep(10)
While 1
$FR = FileReadLine($File)
If @error = -1 Then ExitLoop
TCPSend($tempsocket, BinaryToString($FR))
Sleep(10)
WEnd
TCPSend($tempsocket, $Boundary)
Sleep(10000)
WEnd
Enfaite je veut, toutes les 10 secondes, envoyé une capture d'ecran du serveur > client, seulement j'obtiens dans CaptureR.jpg :
J'ai essayer BinaryToString, StringToBinary des deux cotés, rien n'y fait.
Edit : J'ai vu que c'est de l'héxa, quand j'ouvre l'image d'origine avec un éditeur héxadécimal, j'ai exactement la même chose dans mon fichier CaptureR.jpg... Comment convertir ça en binaire et l’écrire ?!
Merci. Benji.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 15:25
par TommyDDR
lorsque vous récupérez l'image en binaire (vos 0x....) ouvrez un fichier en mode écriture binaire et mettez y vos données.
Code : Tout sélectionner
$File = FileOpen("test", 18)
FileWrite($File, $Donnees)
FileClose($File)
Cala devrait marcher.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 15:29
par Benji2011
Merci j'ai déjà essayé, j'obtiens la même chose : 0xFFD8FFE000104A464946000101 (Hexa)... et vers la fin : èóK»ûÙ'ÿÙ (Binaire)
Je comprend pas,
Merci quand même, Benji.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 16:41
par jchd
Un FileReadLine n'a aucun sens pour un fichier binaire.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 17:49
par Benji2011
Ok, j'ai remplacé par un FileRead($File, 1024) mais cela ne change rien ... J'ai aussi essayer des fonctions HexToBin trouver sur le forum anglais, je me retrouve avec un fichier de 35ko en binaire, et meme en ecrivant le fichier en binaire (18) ca ne fonctionne pas.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 18:13
par TommyDDR
et avec un FileRead($File) ?
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 18:47
par Benji2011
J'obtiens pareil en passant par HexToBin j'ai 111111111101100011111111111000000000000000010000010010100100011001001 ect...
StringToBinary avec ou sans 18 ca marche pas

Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:06
par TommyDDR
Bon, j'ai testé votre code.
Je ne pense pas que vous ayez tout fourni (multiples variables non déclaré, fonctions inconnu). J'ai donc retouché le code sans en modifier le fond.
Et j'ai bien le jpg sans problème.
Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:26
par Benji2011
Avec ton code j'ai pas le CaptureR.jpg qui se crée, j'ai modifié mon premier post avec le code complet, si vous y arriver, merci quand meme

Edit: avec FileRead($File, 1024), j'obtiens que des caracteres Hexa, avec FileReadLine y a du binaire au milieu

Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:35
par TommyDDR
Il fallait "simplement" ouvrir le fichier en binaire, l'envoyer en binaire, le recevoir en binaire et l'écrire en binaire (pas de stringtobinary ou autre)
Voici le code source (Je supprime mon ancien code source pour un gain de place sur le forum

)

Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:41
par Benji2011
Chez moi ça revient au même ... 
STOOOP
Erreur de manip
► Afficher le texte
[blink]CA MARCHE ENFIN[/blink]
Merci beaucoup

Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:42
par TommyDDR
-Créez un nouveau dossier
-Déziper mon archive dedans
-Lancez server.au3
-Lancez client.au3
-Attendez que CaptureR.jpg se créé
-Fermer server et client
-Ouvrez CaptureR.jpg
En faisant ces étapes vous n'avez pas un CaptureR.jpg valide ? 
Ok ^^ De rien

Re: [..] Aide Socket fichier brute binaire
Posté : dim. 17 avr. 2011 19:43
par Benji2011
Même pas le temps de modifier mon ancien message, merci mais c'est bon
Merci encore
