Seite 1 von 1

SendNetworkFileEx()? - BETA Bitte testen!!!

Verfasst: 12.04.2008 20:42
von Scarabol
Hi Leute,

hat schonmal einern nen Ersatz für die oben genannten Befehle gecodet?

Ich frag extra hier, da ich falls nicht vorhatte sowas zu coden...

Gruß
Scarabol

Verfasst: 12.04.2008 22:21
von PMV
Hm, was für Befehle sollen das werden? :wink:

Welches Protokoll nutzen diese? Oder arbeiten SendNetworkFileEx() und
ReceiveNetworkFileEx() zusammen aufbauend auf einem eigenen Protokoll?
Zum empfangen einer Datei über Http wäre meine Include zumindest schon
mal etwas, womit du rumexperimentieren könntest. Ausbauen/ Verbessern
tue ich die eh demnächst wieder. Obwohl "demnächst" auch recht dehnbar
ist. :roll:

http://www.purebasic.fr/german/viewtopi ... c&start=10

Allerdings wird PB4.20 ja eh für FTP und Http entsprechende Befehle
mitbringen. Und für einen Chat muss so etwas eh immer angepasst werden
an das eigene Protokoll. Wer mit den Netzwerk-Befehlen arbeitet, wird
wohl am ende so oder so was eigenes machen müssen, schon für den
Lerneffekt :wink:

... is aber nur meine Meinung.

MFG PMV

Verfasst: 12.04.2008 22:46
von Scarabol
OMG!!!!

Hat da vielleicht mal einer mit PB ein Trojanisches Pferd geproggt?
Bzw. Wo bekomm ich den Code her? :D

Das tritt beim compiliern auf...

Was mach ich jetzt?

Bild

Gruß
Scarabol

Verfasst: 12.04.2008 23:00
von PMV
AntiVir deinstallieren ... und einen anderen Virenscanner drauf machen :lol:
Das Problem mit AntiVir und PB tritt wohl immer wieder auf, wie viele
AntiVir deswegen schon den rücken gekehrt haben weis ich nicht, im Forum
sollte sich aber sicher etwas finden lassen. Die Heuristiksuche runter
schrauben hat glaub ich auch vielen geholfen.

so kann man allerdings auch seinen eigenen Thread Offtopic machen :wink:
So hat der zumindest überhaupt nichts mehr in dieser Tipps und Tricks-
Abteilung zu suchen.

MFG PMV

Verfasst: 12.04.2008 23:02
von Scarabol
Recht haste hatte mir das auch alles viieeeelll einfacher vorgestellt...

Gruß
Scarabol

Verfasst: 12.04.2008 23:03
von ts-soft
Du solltest mal die Information von Avira dazu aufrufen :wink:
Zum Beispiel wenn die DownloadToFile_() API verwendet wird, sieht AVIRA
das als evtl. Virus an. Die heuristische Suche ist sehr empfindlich :mrgreen:

Verfasst: 12.04.2008 23:04
von STARGÅTE
da istwieder n netten Zitat für Kaeru Gaman:
"Hat da vielleicht mal einer mit PB ein Trojanisches Pferd geproggt?"

rofl ^^

@Scarabol, ich habe auch schon oft eine Meldung von AV
http://www.purebasic.fr/german/viewtopi ... =heuristig

Aber da war es nur ein Verdacht.

Diese "Funde" kommen seltsammerweise immer nur bei Netzwerk und Download proceduren, was ja auch recht logisch ist, schließlich verbreiten sich ja die meinsten bösartigen Sachen in Netz, und da brauchen die ja auch solche Befehle.
Bei mir hat ein einfaches "vertauschen/verändern" der normalen Form geholfen, das AV nicht mehr anschlug (einfach n paar codezeilen anders schreiben)

Verfasst: 12.04.2008 23:06
von Scarabol
Anders schreiben?
Naja werds mal versuchen...

Der Anwender hätte aber auch das Problem oder?

Gruß
Scarabol

Verfasst: 12.04.2008 23:25
von PMV
Wenn die Meldung auch bei ausgeschaltetem Debugger kommt, ja.

MFG PMV

Verfasst: 13.04.2008 12:32
von Scarabol
Hi Leute,

ohne Debugger kommt die Meldung nicht :), oder man setzt einfach ein OpenWindow an den Anfang... ??? so einfach ??? toller Virenscanner :(

server.pb

Code: Alles auswählen

Structure Client
  id.l
EndStructure

Procedure SendFile(string)
  If string = 0
    Debug "invalid string"
    ProcedureReturn 0
  EndIf
  id = Val(StringField(PeekS(string), 1, "!"))
  file$ = StringField(PeekS(string), 2, "!")
  filesize = FileSize(file$)
  If filesize < 0
    Debug "invalid filesize"
    Debug filesize
    ProcedureReturn 0
  EndIf
  file = ReadFile(#PB_Any, file$)
  If file = 0
    Debug "file not found"
    Debug file$
    ProcedureReturn 0
  EndIf
  buffer = AllocateMemory(4)
  PokeL(buffer, filesize)
  If SendNetworkData(id, buffer, 4) = -1
    Debug "can't send data 1"
    ProcedureReturn 0
  EndIf
  While start+5000 < Lof(file)
    buffer = AllocateMemory(5000)
    FileSeek(file, start)
    ReadData(file, buffer, 5000)
    again2:
    If SendNetworkData(id, buffer, 5000) = -1
      If i < 2
        Delay(100)
        Goto again2
      Else
        Debug "can't send data 2"
        ProcedureReturn 0
      EndIf
    Else
      i = 0
    EndIf
    FreeMemory(buffer)
    start+5000
  Wend
  l = Lof(file)-start
  buffer = AllocateMemory(l)
  FileSeek(file, start)
  ReadData(file, buffer, l)
  If SendNetworkData(id, buffer, l) = -1
    Debug "can't send data 3"
    ProcedureReturn 0
  EndIf
  FreeMemory(buffer)
  CloseFile(file)
  Debug "file transfer complete"
EndProcedure

If InitNetwork() = 0
  End
EndIf

If CreateNetworkServer(1, 5142) = 0
  End
EndIf

Global NewList Client.Client()


Repeat
  netevent = NetworkServerEvent()
  clientid = EventClient()
  If netevent = #PB_NetworkEvent_Connect
    AddElement(Client())
    Client()\id = clientid
    string$ = Str(clientid)+"!temp.png"
    CreateThread(@SendFile(), @string$)
  EndIf
  
  Delay(10)
ForEver


client.pb

Code: Alles auswählen

If InitNetwork() = 0
  End
EndIf

conid = OpenNetworkConnection("localhost", 5142)
If conid = 0
  End
EndIf

OpenWindow(1, 0, 0, 800, 600, "", #PB_Window_ScreenCentered|#PB_Window_Invisible)
CreateGadgetList(WindowID(1))

Procedure Update(conid)
  Protected all, file, p, f, buffer, len, filesize
  Repeat
    If NetworkClientEvent(conid) = #PB_NetworkEvent_Data
      all = 0
      p = 0
      Repeat
        buffer = AllocateMemory(2000)
        len = ReceiveNetworkData(conid, buffer, 2000)
        If all
          all = ReAllocateMemory(all, MemorySize(all)+len)
        Else
          all = AllocateMemory(len)
          p = 0
        EndIf
        CopyMemory(buffer, all+p, len)
        p+len
        FreeMemory(buffer)
        buffer = 0
        Delay(1)
      Until len < 2000
      Break
    EndIf
    Delay(1)
  ForEver
  
  filesize = PeekL(all)
  
  Debug filesize
  
  file = AllocateMemory(MemorySize(all)-4)
  CopyMemory(all+4, file, MemorySize(all)-4)
  f = MemorySize(all)-4
  FreeMemory(all)
  all = 0
  
  Repeat
    If NetworkClientEvent(conid) = #PB_NetworkEvent_Data
      all = 0
      p = 0
      Repeat
        buffer = AllocateMemory(2000)
        len = ReceiveNetworkData(conid, buffer, 2000)
        If all
          all = ReAllocateMemory(all, MemorySize(all)+len)
        Else
          all = AllocateMemory(len)
          p = 0
        EndIf
        CopyMemory(buffer, all+p, len)
        p + len
        FreeMemory(buffer)
        buffer = 0
        Delay(1)
      Until len < 2000
      file = ReAllocateMemory(file, MemorySize(file)+MemorySize(all))
      CopyMemory(all, file+f, MemorySize(all))
      f + MemorySize(all)
      FreeMemory(all)
      state.f = MemorySize(file)*100/filesize
      Debug state
    EndIf
    Delay(1)
  Until MemorySize(file) >= filesize
  
  CreateFile(1, "temp2.png")
  WriteData(1, file, MemorySize(file))
EndProcedure

WaitThread(CreateThread(@Update(), conid))