Netzwerk Problem oder Bug {Große Daten Versenden}

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das steht beides auf seite zwei...

wenn du an deinen anzeigeoptionen rumschraubst, müssen das andere nicht auch getan haben... ;)


ZeHas einwände sind berechtigt:

vernünftiges einrücken und sinnvolle variablenbezeichnung wäre hilfreich.
(dein letztes codeposting dann editieren, nich wieder neu posten, bitte)

ebenso könntest du das problem noch mal ausformulieren,
das ist nämlich schwieriger aus anderen postings zusammenzusuchen,
als codes, die hättest du nicht nochmal posten brauchen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Das hier:

1. Der Code sendet einen String
2. Wenn dieser empfangen wird, wird eine .exe geöffnet die ein bild macht und es als gsm.bmp speichert.
3. Dieses Bild wird in ein .PNG Bild umgewandelt und gesendet
4. Die empfangene Datei wird wieder in ein .BMP Bild umgewandelt und geladen.


erläutert nämlich nur, was der Code im technischen Sinne machen soll (und das auch eher grob). Aber schön wäre mal eine Erläuterung des "Big Picture", sprich, um was geht es, was willst Du erreichen. Wenn Du die Beschreibung eines Spiels liest, steht da ja auch eher "Du bist ein Ritter und mußt die Prinzessin retten" und nicht "Du steuerst eine Figur mit den Pfeiltasten und es wird dann auf Kollisionen geprüft und diese dann verarbeitet".
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag von kiki »

Ich möchte ein Programm erzeugen dass den Desktop meines einen Computers (Computer-A) fotographiert und auf Computer-B anzeigt.

Erklärung:

Wenn ich auf ein Symbol drücke wird ein String ("Desktops") von dem Client an den Server gesendet und dieser empfängt es. Wenn der Client den String "Desktops" empfängt wird die Aktion darunter Ausgeführt.

Code: Alles auswählen

If Datenpuffer = "Desktops"
Dann wird mit:

Code: Alles auswählen

RunProgram("C:\Windows\System\loli.exe")
Eine Datei gestartet die alles Fotographiert udn es in "C:\Windows\gsm.bmp" speichert.

Dann wird noch die PNG umgebung geladen (Dazu später mehr).

Als nächstes wird dass Bild "gsm.bmp" dass Vorher Fotografiert und gespeichert wurde geladen.

Mit:

Code: Alles auswählen

SaveImage(image, "C:\mssm.png",#PB_ImagePlugin_PNG)
Wird das Bild im PNG Format gespeichert.

Und:

Code: Alles auswählen

SendNetworkFile(ConnectionID, "C:\mssm.png")
sendet dass Bild Natürlich.

Nun Zum Server: Der Server empfängt das .PNG Bild mit der Schleife:

Code: Alles auswählen

Repeat
      em = ReceiveNetworkFile(ClientID, "C:\empf.png")
      Until em <> 0
Mit:

Code: Alles auswählen

m = LoadImage(#PB_Any, "C:\empf.png")
wird dass Bild geladen und mit:

Code: Alles auswählen

SaveImage(m, "C:\save.bmp" , #PB_ImagePlugin_BMP , 10)
Wird dass Bild wieder zurück in das .BMP Format Convertiert.

Mit dem Letzten Load...Befehl wird dass .BMP-Bild geladen und Der Rest Zeigt dass Bild auf dem PC an.

Problem:

Bis zu dem Befehl der die Datei in dass .PNG Format umwandelt läuftalles Glatt aber dann tritt das Problem auf. Die Datei wird Gesendet und gespeichert und der Debugger Meldet "1" aber trotzdem wird die Datei statt Normalgröße (58,6MB) nur in 16 MB gesteichert. Und ich habe dann bei demBefehl nach dem Laden nämlich Saveimage ein problem, da steht: #Image Gadget not Initalizet.





Edit: Problem gelöst





Ich habe den Code etwas verändert und dass Programm im Unicode-Modus laufen lassen, und jetzt klappts.

Jetzt hab ich aber ein Anderes Problem: Der Code wird ab dem Befehl "If Datenpuffer = "Desktops"" und wenn ich auf Stop drücke passiert auch nichts. :? :(

Ich Poste den Code nocheinmal (Ich weiß auch nciht mehr genau was ich dran Verändert habe). Ich Poste am Besten malden Ganzen Code. Und wie gesagt den Code im Unicode-Modus Kompillieren.

Server:

Code: Alles auswählen

Procedure Tool() 
 ClientID = EventClient() 
If  OpenWindow(0, 50, 100, 300, 500, "Server" , #PB_Window_SystemMenu , 0) 
If CreateGadgetList(WindowID(0)) 
ButtonGadget(1, 10, 15, 250, 30, "Monitor Abbild") 


Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
    If EventID = #PB_Event_Gadget 
    
    
    
      If EventGadget() = 1
      ClientID = EventClient() 
      UsePNGImageDecoder()
      UsePNGImageEncoder()
      SendNetworkString(ClientID, "Desktops")
      Repeat
      em = ReceiveNetworkFile(ClientID, "C:\empf.png")
      Until em <> 0
      m = LoadImage(#PB_Any, "C:\empf.png")
      SaveImage(m, "C:\save.bmp" , #PB_ImagePlugin_BMP)
      
      
      LoadImage(3, "C:\save.bmp" , 0)
      If  OpenWindow(0, 1, 1, 1050, 730, "Arbeit" , #PB_Window_BorderLess |  #PB_Window_Maximize, 0) 
      StickyWindow(0, 0)
      If CreateGadgetList(WindowID(0))
      ImageGadget(200, 1, 1, 1, 1, ImageID(3) , 0)
      Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
      EndIf
      EndIf 
      EndIf 
      
      
 
EndIf 
Until lol = 1
EndIf 
   EndIf 
EndProcedure 



Procedure Net(aso.l)
If InitNetwork() = 0 
  MessageRequester("Error", "Can't initialize the network !", 0) 
  End 
EndIf 

Port = 6880
Buffer = AllocateMemory(1000) 

If CreateNetworkServer(0, Port) 

 
  
  Repeat 
     SEvent = NetworkServerEvent() 
  
    If SEvent 
    
      ClientID = EventClient() 
      
      Select SEvent 
      
        Case 1 
        If Tool()
        EndIf  
        
        Case 3
         
      
        
              
       Case 4
       MessageRequester("Error", "Case 4 ist aktiv", 0)
      
        
    EndSelect 
    EndIf 
    
       Until Quit = 1 
        
         EndIf 
         EndProcedure 
         
;-----------------------------------------------------------------------------------------
         
         
         prThread = CreateThread(@Net(), 456)
Repeat
If WaitThread(prThread)
abc = 5
EndIf 
Until abc = 5  
Client:

Code: Alles auswählen

Procedure Main(Dummy.l)
;-Vorbereiten der Netzwerk-Einstellungen

InitNetwork()

Port = 6880

;-Schleife zur Verbindungs-Herstellung
  Repeat 
  ConnectionID = OpenNetworkConnection("127.0.0.1", Port) 
If ConnectionID 

EndIf 
Delay(100) 
Until ConnectionID <> 0 


Repeat 

    
    ServerID = NetworkClientEvent(ConnectionID) 
    Select ServerID
 
   Case 2 
   Repeat 
   Datenpuffer.s = Space(8) 
   ReceiveNetworkData(ConnectionID, @Datenpuffer, 66) 
   If Datenpuffer = "Desktops"
   Debug mh
   RunProgram("C:\Windows\System\loli.exe")
 Delay(1100)
 UsePNGImageEncoder() 
 
image = LoadImage(#PB_Any,"C:\Windows\gsm.bmp") 
If image 
EndIf 
If SaveImage(image, "C:\mssm.png",#PB_ImagePlugin_PNG)
EndIf 
Delay(1000)
Repeat 
   sm = SendNetworkFile(ConnectionID, "C:\mssm.png")
   Until sm <> 0
   Delay(3000)
 EndIf 
 
   
   ForEver
  
  
  
  
  
  Case 3
  
 
Case 4
MessageRequester("Error", "Can't load the movie...", 0)
 exit = 3
  
  End 
  EndSelect 
  
 Until Quit = 1
 exit = 3
 



EndProcedure 

;----------------------------------------------------------------------------------------


amThread = CreateThread(@Main(), 123)
Repeat
If WaitThread(amThread)
adf = 2
EndIf 
Until adf = 2
Zuletzt geändert von kiki am 28.01.2007 21:23, insgesamt 1-mal geändert.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich wiederhole mich ungern, aber den Code wird sich keiner durchlesen. Kannst Du den nicht einfach mal vernünftig (!) einrücken, die Variablennamen sinnvoll benennen und nicht "lol", und bitte nicht tonnenweise Leerzeilen reinhauen die keinen tieferen Sinn haben.

Ist mir schon klar, daß Du in diesem Wirrwarr durchblickst (naja ok eigentlich ja eher nicht), aber ein Außenstehender hat echt null Bock sich da zurechtzuwuseln. Das hat sowas von "ich bin selber zu faul meinen Code zu pflegen, aber helft mir jetzt endlich mal".

(Stell Dir vor, Du gehst zu jemandem, um ihm den Rasen zu mähen, aber Du mußt erstmal den Rasenmäher selber suchen, über den Zaun klettern und Dein eigenes Rasenmäher-Benzin mitbringen...)
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo, muss ich zustimmen.

es ist eigentlich nicht so schwierig, code sinnvoll einzurücken...
und es gibt massig beispiele, wie man das im allgemeinen macht.
letztendlich machen es eigentlich alle nach dem selben grundprinzip,
also gewöhn es dir ruhig an.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Die Art und Weise, was und wie kiki postet erinnert mich ein wenig an Leo...

Nachtigall, ick hör dir trapsen!

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

an welchen Leo?

(\_/)
(o.O)
(>§<)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Kaeru Gaman hat geschrieben:an welchen Leo?
mist! Falsch herum gelesen. Ich meine Joel.

hier: http://www.purebasic.fr/german/viewtopi ... 0319#90319
und hier: http://www.purebasic.fr/german/viewtopi ... 1869#91869

aber egal! So wichtig ist das nun auch wieder nicht.

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

achso... dann is ja gut... ich dachte schon...

(der Leo würde sich nämlich eher die Hand abhacken als so schlecht formatierten code zu posten, und außerdem würde er wahrscheinlich solche Routinchen zwischen Mittagessen und Nachtisch schreiben...)

(\_/)
(n.n)
(> ^)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

/:-> twisted: :twisted: :evil: :twisted: :evil: Was werden denn hier für seltsahme bemerungen über mich losgelassen????

Ich kann es nur immer wieder sagen (Hab ich auch schonmal geschrieben)
"Ich habe Dazu gelernt"

Euer Leo :lol:


Edit: Aber ganz ehrlich bei so nem Code würde ich auch nichtmehr so richtig durchblicken. :freak:

Vielleicht kennt kiki ja keine anderen Wörter <)
Zuletzt geändert von Joel am 30.01.2007 21:15, insgesamt 1-mal geändert.
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Antworten