Problem mit Bytes per TCP.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

maxinet

Betreff: Problem mit Bytes per TCP.

BeitragSa, Jun 03, 2006 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Liebe Forengemeinde!
Ich habe ein Problem. Es werden zuwenige bytes/sek. übertragen. Woran liegt das?
Hier mein Script:

Server:
Code: [AUSKLAPPEN]
Global length%=100
Global file_out$="C:\temp\img.bmp"

tcp=CreateTCPServer(8002)
Repeat
  fileIn=AcceptTCPStream(tcp)
  If fileIn Then
    bank = CreateBank(length%)
    fileOut = WriteFile(file_out$)
   
    If fileIn And fileOut Then
      Repeat
        l=length-1
        WaitEvent(1)
        For I = 0 To length-1
         out$=ReadByte(fileIn)
         If out$="end" Then Exit
         PokeByte(bank,I,out$)
        Next
   
        For I = 0 To l
          WriteByte(fileOut,PeekByte(bank,I))
        Next
        FreeBank bank
        bank = CreateBank(length%)
      Until Eof(fileIn)
      CloseFile fileOut
      FreeBank bank
      Exit
    EndIf
  EndIf
Forever
CloseTCPServer tcp



Client:
Code: [AUSKLAPPEN]
datei_screen=OpenFile("C:\temp\screen.bmp")
tcp_screen=OpenTCPStream("192.168.178.22",8002);ReadString$(daten),8002)
If tcp_screen=0 Then MessageBox("","Der Server antwortet nicht!","Error",$40010) : End

Repeat
  inhalt_screen$=ReadByte(datei_screen)
  WriteByte tcp_screen,inhalt_screen$
Until Eof(datei_screen)
WriteLine tcp_screen,"end"
CloseTCPStream tcp_screen
CloseFile datei_screen



Übers netzwerk werden nur 20kb/s. übertragen -> zu langsam. Was mache ich falsch?

Maxi

Vertex

BeitragMo, Jun 05, 2006 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
100 Byte pro Packet im LAN ist eindeutig zuviel Overhead. Leute lest euch doch mal ein wenig in ISO / OSI ein, und schaut euch selbst an, wieviel Bytes noch zusätzlich an TCP-, IP- und Ethernet-Header anfallen. Das überragt meistens deutlich mehr, als der Payload von euch ist.

Hier mal zum verdeutlichen:
TCP Header
user posted image

IPv4 Header
user posted image

Ethernet Header
Code: [AUSKLAPPEN]
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |       Ethernet destination address (first 32 bits)            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Ethernet dest (last 16 bits)  |Ethernet source (first 16 bits)|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |       Ethernet source address (last 32 bits)                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        Type code              |                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  IP header, then TCP header, then your data                   |
 |                                                               |
     ...
 |                                                               |
 |   end of your data                                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Ethernet Checksum                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Ganz zu schweigen davon, dass ein Acknowlegde vom Empfänger noch verschickt werden muss.

Und weiterhin:
Code: [AUSKLAPPEN]
         out$=ReadByte(fileIn)
         If out$="end" Then Exit

Fällt dir was auf?

mfg olli
 

maxinet

BeitragMo, Jun 05, 2006 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm.
Vielleicht out$=ReadByte$(fileIn) ??

Maxi

Vertex

BeitragMo, Jun 05, 2006 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
out$ wird nur "0", "1", "2" ... "255" sein. Mit ReadByte liest du halt nur einen ganzzahligen Wert zw. 0 und 255 aus.
mfg olli
 

maxinet

BeitragMo, Jun 05, 2006 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
aha, und wie kann man dann das Problem lösen?

Maxi

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group