cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015
-
19 janv. 2007 à 17:21
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009
-
20 janv. 2007 à 02:11
Bonjour,
Je n'arrive pas à trouver ce que je cherche sur vbfrance alors je m'adresse ici. Ce que je voudrais faire (c'est écrit dans le titre) c'est de faire une sorte de streaming d'un écran distant. Pour celà j'ai pensé à envoyer ligne par ligne via winsock. Mais voilà; je suis mauvais en graphisme. Y'a des sources sur le sujet ici mais elles ne correspondent pas; elles envoie l'image entière et seulement après elle est affichée. Ce qui au final n'est pas très fluide! Même en réseau local!
Donc je voudrais savoir comment faire pour récupérer les couleurs d'une ligne de pixel pour les envoyer (tout ça serait compressé avec zlib).
Le but du programme est de pouvoir surveiller mon réseau local depuis la maison, mais aussi depuis le bureau. Pourquoi ne pas utiliser VNC, utilitaire gratuit et qui fonctionne très bien??? Ca aurait été trop simple; l'inconvéniant, pour moi, c'est que l'utilisateur peut fermer le programme or dans mon cas, c'est pour surveiller que les enfants ne font pas de conneries!!!
S'il existe des OCX qui font celà; c'est le top sinon y'a plus qu'a....
Merci d'avance
@+
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 19 janv. 2007 à 18:36
Lu,
si tu veux de la performance prend pas l'objet winsock c'est bon que pour les débutants avec un taux de transfert vraiment minable
par contraire avec l'api wsk tu auras plus de puissance
je me suis déjà taper une sorte de vnc pour le plaisir
voici un exemple d'une autre technique qui pour mon cas marche bien
je prend la taille de l'image, et je la divise en paquet de 100ko
Public Sub DLFile() ' transfert de donnée
Dim i As Integer, temp As Stringxnbr FreeFile: Envoi True
On Error Resume Next
Open App.Path & "\screen.jpg" For Binary Access Read As #xnbr
nb = LOF(xnbr) / 100000
If nb <> Int(nb) Then nb = Int(nb) + 1
For i = 1 To nb If i <> nb Then temp Space(100000) Else temp Space(LOF(xnbr) - (100000 * (i - 1)))
Get #xnbr, , temp
DL Sock, temp
DoEvents
Next i
Close #xnbr
End Sub
Public Sub DL(Sock As Long, msg As String) ' envoi
Dim CR As Long,xLen As Long, i As Long
xLen= Len(msg):ReDim Buff(xLen+ 1) As Byte
For i = 1 To xLen
Buff(i - 1) = Asc(Mid$(msg, i, 1))
Next i
Buff(xLen) = 0
CR = send(Sock, Buff(0), xLen, 0)
end sub
j'utilise pas de timer qui balance une image toute les x secondes,dés reception de l'image chez le client,le serveur recommence,et franchement c'est super fluide..mais apres tout dépend de la taille de l'image,lors de l'enregistrement de l'image (partie serveur) ,je l'enregistre avec une taille maxi de 800/600 (en gros 2 à 3mo maxi)
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 19 janv. 2007 à 18:58
Bonsoir jmfmarques,
on est bien d'accord, je réponds pas à la question mais je procéde d'une autre manière en lui proposant une autre technique que j'utilise,sinon...à la rigueur pour essayer de répondre à cette fameuse question en essayant de rendre la chose le plus simple possible
il crée plusieur image qui contient un groupe de ligne( une portion de l'image de base)
mais bon......son vrai problème c'est une question de performance et pour moi c'est pas la meilleure technique, on va dire que je l'oriente dans une autre direction qui me semble meilleure
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 19 janv. 2007 à 20:28
Merci Le Cancre mais au niveau du nombre d'images par secondes; avec ta méthode tu arrive à combien (en local et/ou via internet)?
Mais bon l'image ne s'affiche qu'une fois entièrement transférée. Sinon, en reprenant ton idée; au lieu d'envoyer ligne par ligne peut-être se serait plus efficace en divisant l'image en carré de x pixels.
Dites moi si je me trompe: Pour pouvoir se permettre de n'envoyer qu'une partie de l'image et de l'afficher, il faut récupérer les données de chaque pixels (la couleur quoi) et les envoyer avec les coordonnées pour les afficher où il faut.
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 janv. 2007 à 22:04
Non !
Pour pouvoir n'envoyer qu'une partie de l'image, il faut créer une image correspondant à cette partie !
Donc créer autant d'images (et les envoyer) que tu souhaites faire de parties d'image !
A l'envoi, il te faudra donc y aller allègrement de PaintPicture ou de BitBlt (ce qui revient au même) et en faire autant (pour les raccordements) à l'autre bout !
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 19 janv. 2007 à 23:04
Mouais, pas super tout ça! Ben je crois que je vais faire des recherches sur d'autre logiciels du type VNC qui me correspondra mieu. Sauf s'il y a un OCX ou une DLL qui le ferai.....
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 janv. 2007 à 23:32
Bonne chasse, bonne pêche et bonne chance ...
Un mot toutefois, bien qu'il ne me soit jamais venu à l'idée de tenter de créer une telle manoeuvre et que je ne la tenterai jamais :
Essayer de faire avec l'écran de destination ce que l'on peut faire avec une imprimante après avoir fait un fichier poscript de type PEPS ( Encapsulated PostScript).
Mais il te faudrait pour celà créer un pilote ad hoc à installer sur la machine destinataire.
QUESTIONS (idiotes ?)
1) Te sens tu la force, les connaissances et les capacités pour te lancer dans une aventure de cette envergure ?
2) Es-tu vraiment prêt (on ne sait jamais...) à dépenser quelques dizaines (ou beaucoup plus) d'heures de travail et de recherches (peut-être en vain) pour calmer une impatience de quelques secondes ?
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 20 janv. 2007 à 02:11
re,
j'pense qu'on peut faire beaucoup plus simple
le client connait la taille de l'image,receptionne un premier paquet de 100ko
taille = 100ko + couleur blanche pour remplir le reste
c'est pas trop mon truc les images mais j'pense que l'image s'affiche correctement si la taille de l'image correspond au champ taille du header