Problem mit TCP-Stream
Übersicht

Czybik88Betreff: Problem mit TCP-Stream |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
wenn ich bei einem TCP-Stream einen String auslesen will, dann crasht mein Server, wenn ich aber nur Bytes auslese, dann crasht er nicht. Mit welchen Strings kann den BB3D umgehen? Weil mein Server in C++ geschrieben ist... Mein Datenpuffer sieht so aus: BYTE number; char ident[250]; BYTE last; MfG |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blitz - Strings sind nicht nullterminiert wie in C/++, sondern bestehen aus einem Integer mit der Anzahl Buchstaben im String, gefolgt vom String selbst.
Aus deinem Datenpuffer wurde ich nicht ganz schlau, aber es scheint nicht ganz der Blitzdarstellung zu entsprechen. Wenn es dann immer noch nicht klappt: Kann sein, dass Blitz einen anderen Endian benutzt. Einfach die Bytefolge vertauschen, dann sollte es gehen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Czybik88 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, danke. | ||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
dafür hatte ich was geschrieben(bb, b3d, b+):
Code: [AUSKLAPPEN] Function WriteStringNew(Stream, Strng$)
If Stream <> 0 Ln = Len(Strng$) For Pos = 1 To Ln WriteByte Stream, Asc(Mid(Strng$, Pos, 1)) Next WriteByte Stream, 0 Return 1 Else Return 0 EndIf End Function Function WriteFloatNew(F#) ;Min=0, Max=4294967296 If Stream <> 0 ;BB: Min=-2147483647, Max=2147483648 (Not Sure) Byte1 = F# And $FF Byte2 = ((F# And $FF00) Shl 8) Byte3 = ((F# And $FF0000) Shl 16) Byte4 = ((F# And $FF000000) Shl 24) WriteByte Stream, Byte1 WriteByte Stream, Byte2 WriteByte Stream, Byte3 WriteByte Stream, Byte4 Return 1 Else Return 0 EndIf End Function Function WriteInt32New(Stream, Int32) ;Min=0, Max=4294967296 If Stream <> 0 ;BB: Min=-2147483647, Max=2147483648 (Not Sure) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) Byte3 = ((Int32 And $FF0000) Shl 16) Byte4 = ((Int32 And $FF000000) Shl 24) WriteByte Stream, Byte1 WriteByte Stream, Byte2 WriteByte Stream, Byte3 WriteByte Stream, Byte4 Return 1 Else Return 0 EndIf End Function Function WriteInt24New(Stream, Int24) ;Min=0, Max=16777216 If Stream <> 0 ;BB: Min=-8388607, Max=8388608 (Not Sure) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) Byte3 = ((Int32 And $FF0000) Shl 16) WriteByte Stream, Byte1 WriteByte Stream, Byte2 WriteByte Stream, Byte3 Return 1 Else Return 0 EndIf End Function Function WriteShortNew(Stream, Short) ;Min=0, Max=65535 If Stream <> 0 ;BB: Min=-32767, Max=32768 (Not Sure) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) WriteByte Stream, Byte1 WriteByte Stream, Byte2 Return 1 Else Return 0 EndIf End Function Function ReadStringNew$(Stream) If WaitOnData(Stream, 2500) = 1 While Not Eof(TCPS) Byte = ReadByte(Stream) If Byte > 0 Out$ = Out$ + Chr(Byte) Else Return Out$ EndIf Wend Return "" EndIf Return "" End Function Function ReadFloatNew#(Stream) If WaitOnData(Stream, 2500) = 1 Byte1 = ReadByte(Stream) Byte2 = ReadByte(Stream) Byte3 = ReadByte(Stream) Byte4 = ReadByte(Stream) F# = (Byte4 Shr 24) Or (Byte3 Shr 16) Or (Byte2 Or 8) Or Byte1 Return F# EndIf Return 0 End Function Function ReadInt32New(Stream) If WaitOnData(Stream, 2500) = 1 Byte1 = ReadByte(Stream) Byte2 = ReadByte(Stream) Byte3 = ReadByte(Stream) Byte4 = ReadByte(Stream) Integ = (Byte4 Shr 24) Or (Byte3 Shr 16) Or (Byte2 Or 8) Or Byte1 Return Integ EndIf Return 0 End Function Function ReadInt24New(Stream) If WaitOnData(Stream, 2500) = 1 Byte1 = ReadByte(Stream) Byte2 = ReadByte(Stream) Byte3 = ReadByte(Stream) Integ = (Byte3 Shr 16) Or (Byte2 Shr 8) Or Byte1 Return Integ EndIf Return 0 End Function Function ReadShortNew(Stream) If WaitOnData(Stream, 2500) = 1 Byte1 = ReadByte(Stream) Byte2 = ReadByte(Stream) Short = (Byte2 Shr 8) Or Byte1 Return Short EndIf Return 0 End Function Function WaitOnData(Stream, TimeOut=10000) MSec = MilliSecs() While Eof(Stream) If MilliSecs()-MSec Return 0 EndIf WaitTimer RespTimer Wend Return 1 End Function Function WriteData(Stream, Dat$) For A = 1 To Len(Dat$) WriteByte Stream, Asc(Mid(Dat$, A, 1)) Next Return 1 End Function Function AddString$(Dat$, Txt$) Dat$ = Dat$ + Txt$ + Chr(0) Return Dat$ End Function Function AddString2$(Dat$, Txt$) Dat$ = Dat$ + Txt$ Return Dat$ End Function Function AddInt$(Dat$, I) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) Byte3 = ((Int32 And $FF0000) Shl 16) Byte4 = ((Int32 And $FF000000) Shl 24) Dat$ = Dat$ + Chr(Byte1) + Chr(Byte2) + Chr(Byte3) + Chr(Byte4) Return Dat$ End Function Function AddSmallInt$(Dat$, I) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) Byte3 = ((Int32 And $FF0000) Shl 16) Dat$ = Dat$ + Chr(Byte1) + Chr(Byte2) + Chr(Byte3) Return Dat$ End Function Function AddShort$(Dat$, S) Byte1 = Int32 And $FF Byte2 = ((Int32 And $FF00) Shl 8) Dat$ = Dat$ + Chr(Byte1) + Chr(Byte2) Return Dat$ End Function Function AddByte$(Dat$, B) Dat$ = Dat$ + Chr(B) Return Dat$ End Function |
||
Warbseite |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group