Problemet er at, når case f.eks. når jeg har skrevet pasv mode til servere, så får jeg et svar tilbage med 227 som start. Desværre så kommer det svar aldrig, men jeg modtager, men case finder det ikke.
det er meget underligt, det er lige som om at den køre det for hurtigt igemmen, når left(sdata,3) ikke når jeg køre linjerne igemmen, og når at lave en case på forskellige kommandoer.
Jeg sad engang og bixede med noget der minder om det: Man kan ikke være sikker på at en besked kommer 'for sig selv'. Så man bliver nødt til at betagte de data der kommer ind som en datastrøm, og så selv finde linebreaks, eller \0 hvad enden af en besked er. Det jeg gjorde var at når der kom data ind proppede jeg det i enden af en global string, og testede så for, om der var en delimiter (i mit tilfælde \0, i dit linebreak. ). Når der var det, kunne jeg være sikker på at jeg havde en komplet linje, og den kunne så fjernes fra den globale string. ... Jeg kan bare ikke helt se om det løser dit problem, men tænkte at det måske kunne hjælpe.
220 T h e B o x (glftpd 1.26_Linux) ready. 331 Password required for silverwolf. 230- Welcome to my home ftp 230 User silverwolf logged in. 350 Restarting at 100. Send STORE or RETRIEVE to initiate transfer. 350 Restarting at 0. Send STORE or RETRIEVE to initiate transfer. 200 Type set to A. 227 Entering Passive Mode <127,0,0,1,143,84)
Jeg får aldrig en vbcrlf på linje 227. eller på 350, eller 200
eeeh, nu ser jeg lige det er en linux... mon ikke den kun sender lf chr(13) eller cr chr(10). Og grunde til at det virker med alle de andre er at de kun kommer en linje ad gangen (200 og 227 kommer sikkert delt af enten chr(10) eller chr(13))
--- Den kommer lige fra hoften: '************************************* '* globalt erklærede vars '************************************* dim myInputstream as string dim delim as string
'************************************* '* winsock eventhandler for DataArrival '************************************* Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim sData As String Dim eoLine as long delim = chr(13) Winsock1.GetData sData, vbString myInputstream = myInputstream & sData eoLine = instr(myInputstream, delim) If eoLine = 0 then exit sub myLine = left(myInputstream, eoLine-len(delim)) myInputstream = right(myInputstream, len(myInputstream) - eoLine) '....... Brug myLine herefter....
Der er en lille bug hvis du har tid, når jeg modtager 230 ( velkom besked ), så foresætter den ikke, den modtager kun 1 pakke, så den kommer aldrig videre. Hvordan får jeg den til at blive ved med at modtage pakker?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.