Доброго времени суток! Нашел статьи Ms-Rem и решил попробовать на практике. большое человеческое спасибо Ms-Rem за них) возникла небольшая проблемка. Как залогировать буфер из recv в текстовый файл как не бился сохраняется всякая не читаямая ересь..... С буфером из send все логируется нормально...... Код (Text): function Nrecv(s: TSocket; Buf: pchar; len, flags: Integer): Integer; stdcall; ...... var ...... i:integer; st:string; begin ....... while i < len do begin st:=st+buf[i]; inc(i); AssignFile(f,'recv.txt'); Append(f); WriteLn(f,'coket:-'+floattostr(s)+st); CloseFile(f); ....... end; Подскажите как раскодировать буфер из recv и сохранить в текстовый файл. Заранее благодарен! Сильно не бейте я маленький=)
Код (Text): int new_recv(int fd, void* buffer, int maxlen, int flags) { void* my_buf = malloc( maxlen ); int bytes = original_recv( fd, my_buf, maxlen, flags ); // обработка HANDLE hLog = CreateFile("log.log", ... ); if( hLog != INVALID_HANDLE_VALUE ) { DWORD w; WriteFile( hLog, my_buf, bytes, &w, 0 ); CloseHandle( hLog ); } memcpy( buffer, my_buf, bytes ); free( my_buf ); return bytes; } ну примерно так.. на С++
Great спасибо =)) тока я с си жалко не дружу....можешь прокоментировать чуть чуть =) а может у кого на делфи есть?
А че тут комментировать то, почти везде апишки. короче вызываешь оригинальную функцию recv и пихаешь результат во внутренний свой буфер. потом, если надо, обрабатываешь его, потом логируешь в файл, потом копируешь в пользовательский буфер, освобождаешь внутренний, и возвращаешься.
Маленькое уточнение: делай SetFilePointer на конец файла - иначе просто будешь затирать в файле лога каждым последующим recv данные из каждого предыдущего.
MSoft ну это да ) я просто сначала хотел написать с FILE* и fopen(..., "a+")/fwrite, а потом передумал ну вообще еще неплохо добавить время логирования и прочее.
Я вообще не понял, в чем проблема изначально была. Может имелось ввиду, что нужна конвертация hex->ascii? А то мне кажется, что он сохраняет бинарные данные, а в текстовом редакторе хочет их нормально увидеть. Ладно, будут проблемы, может уточнит вопрос.
MSoft я раньше с "инет технологиями" =)) никогда не связывался....... короче посидел порылся немного и нашел в чем дело .....данные клиенту приходят и сохраняются в текстовый файл......только они запакованы q-zip ...... вопрос как этот q-zip обойти или раскрыть данные на "лету"!! или может у кого нить есть dll c функцией типа q_zip(buf:PCHAR; len:integer:string; =)); где результат девственно чистая сторока buf