Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

netlin.bi u. netwin.bi

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 13:49    Titel: netlin.bi u. netwin.bi Antworten mit Zitat

Hallo zusammen,
ich wollte Fragen, wo ich einstellen kann "bei den oben genannten Dateien", den Sende und Empfangsspeicher.

Hab selbst herausgefunden das er auf 4 Kilobyte beschränkt ist.

Möchte diesen aber viel größer haben.

http://andybos.an.funpic.de/freebasic/netlin.bi

http://andybos.an.funpic.de/freebasic/netwin.bi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 14:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 16:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.09.2010, 18:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 18:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.09.2010, 18:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 18:51    Titel: Antworten mit Zitat

Tjo was machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.09.2010, 19:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 19:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.09.2010, 19:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 05.09.2010, 19:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 05.09.2010, 22:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 06.09.2010, 19:49    Titel: Antworten mit Zitat

ich raffs nett sorry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 06.09.2010, 19:58    Titel: Antworten mit Zitat

Der Code hat zwar nichts mit deinem Problem zu tun, zeigt aber, wie man bestimmte Daten in eine andere Form umwandelt und das mit Hilfe von memcpy: http://www.freebasic-portal.de/porticula/udt-string-udt-1145.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 06.09.2010, 19:58    Titel: Antworten mit Zitat

uuund wir sind draußen.

sorry der musste sein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz