* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 21, 2024, 10:13:41 pm

Inserisci il nome utente, la password e la durata della sessione.

102 Visitatori, 0 Utenti

Autore Topic: Assistenza remota simil Team Viewer  (Letto 33646 volte)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Assistenza remota simil Team Viewer
« Risposta #60 il: Novembre 05, 2020, 08:49:14 am »
secondo me il problema non è synapse

qualcosa del genere potrebbe andare
è una classe che splitta un maxi-pacchetto in tanti pacchetti di una dimensione minore
poi l'invio dovrebbe inviarli tutti

come la vedete?

Codice: [Seleziona]

const
  MAXSIZEPACKET = 4096;


type
  TPacketData = array [1..MAXSIZEPACKET] of char;
 
  TSplittedPacket = record
     ID: Int64;           // identifica un unico pacchetto
     PacketNo,            // numero dello split corrente
       TotPackets: Int64; // totale split
     Size: Int64;         // dimensioni dati in Data (per ultimo pacchetto)
     Data: TPacketData;
  end;

  TSplittedPackets = array of TSplittedPacket;


class TSplitedPacket ....
   PacketList: TSplittedPacket;
private
   procedure DoSplitPacket(AStream: TStream);
   
public
   procedure LoadPacket(AStream: TStream);

end;


procedure TSplitedPacket.LoadPacket(AStream: TStream);
var need: Int64;
begin
   SetLength(PacketList, (Astream.Size div MAXSIZEPACKET) + 1);
   DoSplitPacket(AStream);
end;


procedure TSplitedPacket.DoSplitPacket(AStream: TStream);
var scan: Int64;
    SplittedBytes: Int64;
begin
   SplittedBytes:=0;
   for scan := 0 to length(PacketList) - 1 do begin
       PacketList.ID = "numero invio";
       PacketList.PacketNo := scan;
       PacketList.TotPackets := length(PacketList);
       PacketList.Data := ...
   end;
end

Edit:
ho corretto  il codice che presentava qualche errore


Edit2:
l'invio dovrebbe inviare una struttura TSplittedPacket (serializzata in qualche modo)
così da poter ricostruire il pacchetto originale usando PacketNo e TotPackets
« Ultima modifica: Novembre 05, 2020, 08:53:52 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #61 il: Novembre 05, 2020, 01:02:40 pm »
Questa mattina mi sono svegliato alle 5 e la testa girava su quel problema. Alla fine mi sono alzato dopo pochi minuti e l'ho risolto con synapse. Questa sera quando torno a casa vi aggiorno, questa mattina non avevo tempo, dovevo andare al lavoro quando ho finito. Questa sera faccio dei test e vi condivido il risultato
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Assistenza remota simil Team Viewer
« Risposta #62 il: Novembre 05, 2020, 05:22:04 pm »
Ciao.


Avrei una proposta scandalosa.


Al posto di avere un thread per comando da inviare tra le macchine.


Usare il Command Pattern?


Allego un possibile esempio di quello che intendo.
(Compila nn so se funziona).


Stilgar



Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #63 il: Novembre 05, 2020, 06:19:32 pm »
Ciao a tutti, ecco un semplice esempio che manda i jpg scomposti e poi li ricompone. Funziona se non cifro la connessione.
Per fare dei test basta che aprite due istanze del programma.
Su una premete il pulsante "Start server jpg" (che dura solo 4/5 secondi) e poi velocemente sull'altra istanza premete "Send Jpg".
Se l'unico campo Edit (all'avvio è autopopolato con il testo "mypwd") è vuoto funziona, altrimenti no.

Non capisco cosa non funziona (in questo momento ho gli occhi che si chiudono che sono cotto). Inoltre il pulsante button6 simula la crittografia senza mandarlo sulla rete (e funziona) quindi non capisco cosa sbaglio.

Testato sia su mac che su ubuntu.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #64 il: Novembre 05, 2020, 06:20:04 pm »
Ciao.


Avrei una proposta scandalosa.


Al posto di avere un thread per comando da inviare tra le macchine.


Usare il Command Pattern?


Allego un possibile esempio di quello che intendo.
(Compila nn so se funziona).


Stilgar
Giuro che domani sera lo guardo, questa sera sono una ameba.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #65 il: Novembre 06, 2020, 05:40:37 pm »
Ho capito il problema. La crittografia blowfish mi cambia la dimensione dell'output, mentre per me è importante che rimanga uguale. Userò un AES CRT a 128 bit. Vi tengo aggiornati sugli sviluppi
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #66 il: Novembre 07, 2020, 05:42:53 pm »
Ecco a voi la nuova versione. Migliorata e più veloce (ora le immagini non sono mandate in base64). Stilgar, ho guardato il tuo esempio ma non ho capito come questo mi permetterebbe di bypassare l'uso dei thread.

www.lazaruspascal.it/download_personali/korg_remote_desktop.zip

Ora c'è una dipendeza in più: dcpcrypt

Ditemi cosa ne pensate. Ci sono anche gli eseguibili per

Ubuntu
Win32
Win64
Mac OS X (cocoa)

Ho già imbastito anche la trasmissione del mouse remoto (ma al momento non influisce, scrive solo le coordinate nella caption della form (che invia il proprio desktop).
Come già detto ora non usa più la crittografia blowfish, ma aes a 128 bit. Se la password è vuota viene mandato il dato in chiaro.

All'avvio ho aggiunto la possibilità di far vedere nella memo iniziale l'indirizzo IP per la rete locale e quello per l'accesso ad internet. (questo per fare test su macchine diverse).

Ho anche tolto la possibilità di dimensionare il pacchetto con la barra. Ora c'è una checkbox (jumbo packet) che se è flaggata manda pacchetti di 65507 byte, altrimenti li manda di 8190.

Fatemi sapere il vostro parere.
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Assistenza remota simil Team Viewer
« Risposta #67 il: Novembre 08, 2020, 11:45:19 am »
Stilgar, ho guardato il tuo esempio ma non ho capito come questo mi permetterebbe di bypassare l'uso dei thread.
I thread possono essere in numero limitato se usi il command pattern.
Adesso, se ho capito il la struttura del progetto, hai un thread che comunica con il peer tra le macchine.
Uno in lettura e uno in scrittura per ogni comando.
Potresti arrivare ad avere 1 solo thread per la gestione della comunicazione, al posto di avere il thread per il ping e per la gestione delle immagini.
Stilgar

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #68 il: Novembre 08, 2020, 12:35:26 pm »
 Allo stato attuale uso 4 thread x inviare e ricevere le immagini, perché suddivido il monitor in 4 parti. Più un thread per tutte le altre comunicazioni.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #69 il: Novembre 11, 2020, 09:43:39 pm »
Ciao a tutti. Ho fatto delle aggiunte ed ho aggiornato il programma.

Link: www.lazaruspascal.it/download_personali/korg_remote_desktop.zip

Ora sono queste le dipendenze

LCL
laz_synapse
dcpcrypt
LazMouseAndKeyInput (se usate cocoa, usate la versione che trovate a questo link: www.lazaruspascal.it/download_personali/mouseandkeyinput_cocoa_support.zip)

Ho anche aperto un 3d sul forum internazionale, in modo da trovare qualcuno che vuole contribuire al progetto. Questo il link: https://forum.lazarus.freepascal.org/index.php?topic=52110.msg383428#msg383428
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Assistenza remota simil Team Viewer
« Risposta #70 il: Novembre 12, 2020, 08:35:29 am »
penso che dovresti mettere su un repository da qualche parte ;)
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #71 il: Novembre 12, 2020, 08:46:55 am »
L'obbiettivo è quello, ma prima voglio risolvere il fatto che in lan lavora bene e in wan non funziona.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #72 il: Novembre 12, 2020, 06:58:21 pm »
Ho capito cosa sbaglio. Non ho implementato correttamente UDP Hole Punching.
Manca ancora un software "controller" raggiungibile sempre. Nel week end lo implemento se riesco e poi vi aggiorno. Intanto se qualcuno volesse darmi dei feedback sul lavoro in lan ne sarei davvero felice.
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Assistenza remota simil Team Viewer
« Risposta #73 il: Novembre 13, 2020, 08:44:20 am »
mi puoi elencare le direttive che devo mettere per linux per favore?

Edit:
alla fine le ho trovate le metto quì per documentazione

-dUseCThreads
-dNoWriteDebug
-dGetScreenInMainThread
-dMyVersion
-dFilterFromIpPort

Edit2:
ora in lan è molto più veloce della vecchia versione
aspettiamo la versione wan :)

« Ultima modifica: Novembre 13, 2020, 08:53:19 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:Assistenza remota simil Team Viewer
« Risposta #74 il: Novembre 15, 2020, 05:00:46 pm »
Eccomi qui, volevo solo avvisarvi che non ho aggiornato il software come avevo detto. Ho fatto delle modifiche, ma non sono riuscito ad implementare l'UDP Hole Punching.
Ho creato il server controller (che funziona correttamente) perchè permette ai client colleggati di ottenere gli ip e le porte dei client remoti, ma quando provo ad instaurare la connessione non funziona. Inizio ad essere disperato perchè vi ho passato sopra tutto il week end senza cavarne un ragno dal buco.
Ieri è passato, domani è futuro, oggi è un dono...

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 123
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 102
Total: 102

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.