Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 14:51 Titel: |
|
|
Code: |
'helpers if you won't send buffers of bytes
Function NetSendString(Byval hSocket As FDSOCKET,Byval message As String) As Integer
Dim lpBuffer As Ubyte Ptr
Dim As Integer l,i
l=Len(message)
If l=0 Then Return 0
lpBuffer=allocate(l)
For i=0 To l-1
lpBuffer[i]=message[i]
Next
Function=NetWrite(hSocket,lpBuffer,l,0)
deallocate(lpBuffer)
End Function
Function NetReciveString(Byval hSocket As FDSOCKET,Byref message As String) As Integer
Dim lpBuffer As Ubyte Ptr
Dim As Integer l,i
message=""
lpBuffer=allocate(4069)
l=NetRead(hSocket,lpBuffer,4069,0)
If l>0 Then
For i=0 To l-1
message=message & Chr(lpBuffer[i])
Next
End If
deallocate(lpBuffer)
Function=l
End Function
|
ich schätze mal in den beiden Funktionen
Nur wie |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 16:31 Titel: |
|
|
Achso, das kleine vnc Programm ist schon fertig, jedoch sehr langsam, da ich immer das jeweilige Bild "in kleine Dateien stecken muss", welche ich dann wiederum übermittele und dann wieder zu einem Bild zusammenfüge.
Wenn ich es in einem Rutsch übermitteln könnte, wäre es schneller.
Naja...vielleicht kann mir jemand helfen |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 05.09.2010, 18:13 Titel: |
|
|
Hallo,
ich habe deine BI-Dateien jetzt noch nicht durchgeschaut, aber in der folgenden Funktion, die du gepostet hast, wird ja ein Buffer von 4069 Bytes (rund 3,97 kB) erzeugt, also etwas weniger als 4 kB.
Code: | Function NetReciveString(Byval hSocket As FDSOCKET,Byref message As String) As Integer
Dim lpBuffer As Ubyte Ptr
Dim As Integer l,i
message=""
lpBuffer=allocate(4069)
l=NetRead(hSocket,lpBuffer,4069,0)
If l>0 Then
For i=0 To l-1
message=message & Chr(lpBuffer[i])
Next
End If
deallocate(lpBuffer)
Function=l
End Function |
Wie sieht's aus, wenn du da einfach 128 kB oder so verwendest?
Code: | ...
lpBuffer=callocate(131072) '=128kB
l=NetRead(hSocket,lpBuffer,131072,0)
... |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 18:24 Titel: |
|
|
Ich hab anstelle der 128 kb mal 1024 Byte * 1024 Byte = 1 MB genommen und er überträgt es zwar, aber das ist ja noch langsamer als gedacht |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.09.2010, 18:36 Titel: |
|
|
Zitat: | message=message & CHR(lpBuffer[i]) |
Das muss ja langsam laufen! Ich hab keine Ahnung, wie viel zusätzlichen Speicher FB am Stringende reserviert, aber selbst wenn es 32 byte sind, muss immer nach 32 byte komplett neuer Speicher alloziert werden, und zwar jedes mal 32 byte mehr, und der bisherige Pufferinhalt muss dann auch noch jedes mal kopiert werden... Das ist unendlich langsam und schlecht schrieben. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 18:51 Titel: |
|
|
Tjo was machen? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.09.2010, 19:00 Titel: |
|
|
tjoa, man könnte die einzelnen string-verkettungen wohl durch ein simples memcpy aus der c-standard-bibliothek ersetzen. aber nachdem du ja noch nicht mal gesehen hast, wo in der funktion die pufferlänge festgelegt wird, bezweifle ich irgendwie, dass du das hinkriegst... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 19:24 Titel: |
|
|
Code: |
Declare Sub CopyMemory Lib "kernel32.dll" _
Alias "RtlMoveMemory" ( _
ByRef Dest As Any, _
ByRef Source As Any, _
ByVal cbCopy As Long)
|
Dest = wohin es kopiert werden soll
Source = was kopiert werden soll
cbCopy = ?
trotzdem weiss ich nicht, was mir das bringen soll, da ich ja Source auf Dest kopiere und demzufolge der Inhalt nicht anwächst.
Bitte erklärt es mir einer |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.09.2010, 19:27 Titel: |
|
|
cbCopy = anzahl der zu kopierenden bytes.
und statt nun message byte für byte zusammenzusetzen, kopierst du du den ganzen inhalt rüber. das geht natürlich nicht so einfach mit einem string, da würde ich schon mit pointern und allocate/deallocate arbeiten. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 05.09.2010, 19:38 Titel: |
|
|
Code: |
Function NetReciveString(Byval hSocket As FDSOCKET,Byref message As String) As Integer
Dim lpBuffer As Ubyte Ptr
Dim As Integer l,i,groesse
message=""
groesse = 1024
lpBuffer=allocate(groesse)
l=NetRead(hSocket,lpBuffer,groesse,0)
If l>0 Then
For i=0 To l-1
message=message & Chr(lpBuffer[i])
Next
End If
deallocate(lpBuffer)
Function=l
End Function
|
Allocate Speicher reservieren und deallocate Speicher wieder freigeben.
Trotzdem stehe ich aufm Schlauch.
Könntest du mir zeigen, wie das geht? |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 05.09.2010, 22:35 Titel: |
|
|
Nein, das kriegen sooooo viele andere Leute von sich aus hin. Google doch mal ein bisschen (verflucht!) und bring dir das selber bei. Das haben auch schon soooo unglaublich viele Leute geschaft. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 06.09.2010, 19:49 Titel: |
|
|
ich raffs nett sorry |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 06.09.2010, 19:58 Titel: |
|
|
uuund wir sind draußen.
sorry der musste sein |
|
Nach oben |
|
 |
|