Bonjour robert33,
Desole pour le temps tardif de ma reponse.
J ai reussi a comprendre le systeme d un routeur ,ce qu il me manquait ,pour comprendre tout cela.
apres verif je me suis apercu que mon programme marchait tres bien sauf que je l utilisais mal au niveau de l insertion des address ip de chaque ordi
J en ai profite pour augmenter un peut l utilite du programme en transmettant le bureau de l un sur l autre avec pour l instant juste le visu du bureau sans la prise en compte des evenements de la souris et du clavier cela on verra beaucoup plus tard
Ca fonctionne tres tres bien encore une fois en reseau local et en resau distant ,mon probleme, n est plus d ordre de connection mais d interpretation des image au niveau je pense du rgb je crois.
J ai teste mon nouveau programme comme un chat en reseau distant et il fonctionne tres bien mais des que j envoie les images ca marche sauf que l ecran du receveur est tout noir .
Je t envoi juste les partis client serveur de la transmition
client
Stream fs;
private void button1_Click( object sender, EventArgs e)
{
TcpClient tc = new TcpClient (textBox1.Text,2112);
NetworkStream ns = tc.GetStream();
byte [] b = CaptureTotale();
ns.Write(b, 0, b.Length);
}
[
DllImport ( "user32.dll" )] private static extern IntPtr GetDesktopWindow();[
DllImport ( "gdi32.dll" )] private static extern bool BitBlt( IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
private const int SRCCOPY = 0xCC0020;
public byte [] CaptureTotale(){
IntPtr handle = GetDesktopWindow(); Graphics gScreen = Graphics .FromHwnd(handle); Rectangle r = Screen .PrimaryScreen.Bounds; Bitmap bmpScreen = new Bitmap (r.Width, r.Height); Graphics gBmp = Graphics .FromImage(bmpScreen); IntPtr hDCScreen = gScreen.GetHdc(); IntPtr hDCBmp = gBmp.GetHdc();BitBlt(hDCBmp,
0,
0,
r.Width,
r.Height,
hDCScreen,
0,
0,
SRCCOPY);
gScreen.ReleaseHdc(hDCScreen);
gBmp.ReleaseHdc(hDCBmp);
MemoryStream ms = new MemoryStream (); bmpScreen.Save(ms, System.Drawing.Imaging.
ImageFormat .Png);
byte [] b = ms.GetBuffer();
return b;}
serveur
private void button1_Click( object sender, EventArgs e){
Thread th = new Thread ( new ThreadStart (Listen));th.Start();
}
byte [] b; int k; public void Listen(){
Socket Listener = new Socket ( AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp);Listener.Bind(
new IPEndPoint ( IPAddress .Any,2112));Listener.Listen(0);
Socket s = Listener.Accept(); Stream netStream = new NetworkStream (s);
// Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
b =
new byte [20000000];k = s.Receive(b);
pictureBox1.Image =
new Bitmap ( new System.IO. MemoryStream (b)); s.Close();
Listener.Close();
}
public
void UpdateDisplay(string text){
// textBox2.Text = text; }
protected delegate void UpdateDisplayDelegate ( string text);La fonction updateDisplay etait pour le test de l envoi de text n y fais pas attention Ce n est juste que pour te monter le code de maniere a te donner une idee de ma demarche au niveau de l envoi
mais dans mon reel programme il y a evidement un timer des sleep et une gestion des pointeurs entre deux images pour en deduire la difference et ainsi envoyer la difference et pas a chaque fois toutes les images complete
et d ailleurs ce systeme de pointeurs m avait ete commente par deus membres de ce site ce qui m a ensuite permis de le finir et de le mettre en oeuvre
voila
Peut etre aurai eu une idee
Dans l attente d un retour je te remercie ou remercie tous ceux qui pourraient eventuellement m aider
cordialement
dany