stbi hat geschrieben:Könnte es sein, dass diese Userlib nur in einer Instanz auf einem Rechner laufen kann, also Server und Client nicht auf dem gleichen Rechner sein können?
PureFan ?
stbi hat geschrieben:Nimm FTP
Niemals. Ich will das jetzt gelöst bekommen... Daten sind jetzt schon mit Atomic FTP Server auf dem NB, will aber nu das Programm zum laufen bekommen. Ich hab 2 Seiten Protokoll geschrieben, ich will das jetzt umgesetzt bekommen.
Hier der Code, mit dem Client klappt das ganze:
Code: Alles auswählen
Global sckMain.UDPconnect
Global *UDPStack.l
Global UDPThread.l
UDPInitNetwork()
Procedure.s Base64Encode(strText.s)
DefType.s Result
*B64EncodeBufferA = AllocateMemory(Len(strText)+1)
*B64EncodeBufferB = AllocateMemory((Len(strText)*3)+1)
PokeS(*B64EncodeBufferA, strText)
Base64Encoder(*B64EncodeBufferA, Len(strText), *B64EncodeBufferB, Len(strText)*3)
Result = PeekS(*B64EncodeBufferB)
FreeMemory(*B64EncodeBufferA)
FreeMemory(*B64EncodeBufferB)
ProcedureReturn Result
EndProcedure
Procedure ViewStack()
DefType.l DataAvailable
*UDPBuffer = AllocateMemory(1025)
Repeat
DataAvailable = UDPDataAvailable(sckMain)
If DataAvailable <> 0
Debug DataAvailable
PrintN("Data available")
UDPReceive(sckMain, *UDPBuffer, 1024)
PrintN(PeekS(*UDPBuffer, 1024))
EndIf
Delay(1)
ForEver
EndProcedure
Procedure.b SendNetPacket(lngBefehl.l, strGUID.s, strData.s)
DefType.l PaketLen
DefType.s tmpPaket
strData = Base64Encode(strData)
PaketLen = Len(strData)+Len(strGUID)+32
*UDPSendBuffer = AllocateMemory(PaketLen)
tmpPaket = Hex(lngBefehl)
tmpPaket = tmpPaket + Chr(2)
tmpPaket = tmpPaket + Hex(Len(strData))
tmpPaket = tmpPaket + Chr(2)
tmpPaket = tmpPaket + strGUID
tmpPaket = tmpPaket + Chr(1)
tmpPaket = tmpPaket + strData
tmpPaket = tmpPaket + Chr(4)
PokeS(*UDPSendBuffer, tmpPaket)
Debug "Sending Buffer: " + PeekS(*UDPSendBuffer)
UDPSend(sckMain, *UDPSendBuffer, PaketLen)
RtlFillMemory_(*UDPSendBuffer, PaketLen, 0)
FreeMemory(*UDPSendBuffer)
EndProcedure
Procedure ParseCommand(strZeile.s)
DefType.s MapCMD, MapParam, strTemp
DefType.l ParmPtr, tmpFnktmp1, tmpFnktmp2
Dim MapArray.s(20)
MapCMD = StringField(strZeile, 1, " ")
MapParam = Right(strZeile, Len(strZeile) - FindString(strZeile, " ", 1))
Debug strZeile
For ParmPtr = 1 To 20
strTemp = Trim(StringField(MapParam, ParmPtr, ","))
MapArray(ParmPtr - 1) = strTemp
Next
Select MapCMD
Case "/debug"
PrintN(MapArray(0))
Case "/connect"
Print("Build connection to " + MapArray(0) + "...")
If UDPConnectServer(Val(MapArray(1)), MapArray(0), sckMain)
UDPStartCaptureEvents(sckMain)
UDPThread = CreateThread(@ViewStack(), 0)
PrintN("OK")
Else
PrintN("Error")
EndIf
Case "/send"
Debug MapArray(0)
PokeS(*UDPStack, MapArray(0))
UDPSend(sckMain, *UDPStack, 2000)
Case "/paket"
SendNetPacket(Val(MapArray(0)), MapArray(1), MapArray(2))
EndSelect
EndProcedure
*UDPStack = AllocateMemory(2048)
OpenConsole()
Repeat
Eingabe.s = Input(): PrintN("")
ParseCommand(Eingabe)
ForEver