elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  GZipStream: Problema con numero magico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: GZipStream: Problema con numero magico  (Leído 20,711 veces)
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: GZipStream: Problema con numero magico
« Respuesta #20 en: 6 Noviembre 2010, 15:31 pm »

Puedes crear la Dll de esta forma:

Código
  1. //zip.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.IO;
  6. using System.IO.Compression;
  7.  
  8. namespace GZipStreamC
  9. {
  10.    public class ZipStream
  11.    {        
  12.        public static string Zip(string text)
  13.        {
  14.            byte[] buffer = Encoding.UTF8.GetBytes(text);
  15.            MemoryStream ms = new MemoryStream();
  16.            using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
  17.            {
  18.                zip.Write(buffer, 0, buffer.Length);
  19.            }
  20.            ms.Position = 0;
  21.            byte[] compressed = new byte[ms.Length];
  22.            ms.Read(compressed, 0, compressed.Length);
  23.            byte[] gzBuffer = new byte[compressed.Length + 4];
  24.            System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
  25.            System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
  26.            return Convert.ToBase64String(gzBuffer);
  27.        }
  28.        public static string UnZip(string compressedText)
  29.        {
  30.            byte[] gzBuffer = Convert.FromBase64String(compressedText);
  31.            using (MemoryStream ms = new MemoryStream())
  32.            {
  33.                int msgLength = BitConverter.ToInt32(gzBuffer, 0);
  34.                ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
  35.                byte[] buffer = new byte[msgLength];
  36.                ms.Position = 0;
  37.                using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
  38.                {
  39.                    zip.Read(buffer, 0, buffer.Length);
  40.                }
  41.                return Encoding.UTF8.GetString(buffer);
  42.            }
  43.        }
  44.    }
  45. }

Si utilizas versiones express, para compilarlo necesitas tener instalado el VC++ 9 (Símbolo del sistema de Visual Studio ....) y la haces con la siguiente linea:

Código
  1. csc /target:library /out:zip.DLL zip.cs

Puedes añadir más parametros deacuerdo a tus necesidades.

De todas formas te doy el enlace a la dll que necesitas:

http://www.4shared.com/file/sI775UnO/zip.html

Pero lo mejor es que modifiques el code para prevenir posibles errores.

Lo utilizas de la sgte forma:

Código
  1. Imports GZipStreamC.ZipStream
  2. Public Class Form1
  3.  
  4.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  5.        TextBox1.Text = Zip(TextBox1.Text)
  6.    End Sub
  7.  
  8.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  9.        TextBox1.Text = UnZip(TextBox1.Text)
  10.    End Sub
  11. End Class
  12.  

Antes necesitas hacer una referencia a zip.dll

Es solo un ejemplo sencillo, solo para probar como funciona.
 :P


En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: GZipStream: Problema con numero magico
« Respuesta #21 en: 6 Noviembre 2010, 18:47 pm »

Espectacular 43H4FH44H45H4CH49H56H45H, ahora instalo el VC++ 9 porque solo instalo el VB yo, y luego pruebo.

Muchas gracias a los 4 que se interesaron en mi problema!!


Saludos, Sancho.Mazorka    :P


En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: GZipStream: Problema con numero magico
« Respuesta #22 en: 10 Noviembre 2010, 20:32 pm »

Recien ayer pude probar, estuve probando muchos ejemplos, modificaciones y demas y me sigue tirano error, por suerte, ahora es otro error xD

Código:
Carácter no válido en una cadena Base-64.

Excepción del tipo 'System.FormatException' en zip.dll

Probe con la DLL que subiste, y tambien creando yo mismo la DLL y de las 2 formas, genera un error.

Modificacion: Solo estuve probando la funcion UnZip(), es la que necesito.

Saludos, Sancho.Mazorka    :¬¬
« Última modificación: 10 Noviembre 2010, 20:41 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: GZipStream: Problema con numero magico
« Respuesta #23 en: 10 Noviembre 2010, 22:20 pm »

Sancho.Mazorka acabo de hacer pruebas con lo siguiente

Codigo en Vb .net

Código:
Public Function Zip(ByVal text As String) As String
        Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
        Dim ms As New MemoryStream
        Dim _zip As GZipStream = New GZipStream(ms, CompressionMode.Compress, True)
        _zip.Write(buffer, 0, buffer.Length)

        ms.Position = 0
        Dim compressed(ms.Length) As Byte
        ms.Read(compressed, 0, compressed.Length)

        Dim gzBuffer(compressed.Length + 4) As Byte

        System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length)

        System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4)

        Return Convert.ToBase64String(gzBuffer)

    End Function

Codigo en C#

 
Código:
public static string Zip(string text)
        {
            byte[] buffer = Encoding.UTF8.GetBytes(text);
            MemoryStream ms = new MemoryStream();
            using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
            {
                zip.Write(buffer, 0, buffer.Length);
            }
            ms.Position = 0;
            byte[] compressed = new byte[ms.Length];
            ms.Read(compressed, 0, compressed.Length);
            byte[] gzBuffer = new byte[compressed.Length + 4];
            System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
            System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
            return Convert.ToBase64String(gzBuffer);
        }


Y al parecer ambos devuelven diferentes valores entonces yo pienso que el problema no esta en la metodo UnZip sino en el metodo Zip te adjunto un proyecto de pruebas que hice

http://www.megaupload.com/?d=UFUG594V

es mas los resultados de ambos metodos no se diferencian de mucho que digamos solo en el final, la recomendacion seria probar tanto el metodo zip como unzip usando c# ya que en vb no nos anda correctamente espero alguien pueda decir porque!!!!!!!

Es mas ahurita acabo de probar que el metodo Unzip funciona perfectamente en vb y c# entonces el problema es el zip.
« Última modificación: 10 Noviembre 2010, 22:24 pm por .::IT::. » En línea

Simplemente .::IT::.
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: GZipStream: Problema con numero magico
« Respuesta #24 en: 10 Noviembre 2010, 23:17 pm »

Asi es, ahi estuve viendo el ejemplo que hiciste y es cierto. Yo lo que hago es enviar a MegaUpload un GET para que me envien la web de ellos comprimida en gzip, asi se hace mas rapido el tramite. El servidor me responde que esta comprimido en gzip.

CABECERAS
<CrLf>
<CrLf>
CUERPO_DEL_MENSAJE

Con un .Split(respuesta, vbCrLf & vbCrLf, 2), divido la respuesta en 2, por una parte las cabeceras, y por otro lado el cuerpo del mensaje comprimido, a eso lo paso directamente a la funcion UnZip hecha en C#

Subi el proyecto mio por si quiere hecharle un vistazo y saber si funciona lo que estas probando.


Saludos, Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: GZipStream: Problema con numero magico
« Respuesta #25 en: 10 Noviembre 2010, 23:41 pm »

Sancho.Mazorka pues la verdad no estoy probando nada, solo queria ver el error acerca del numero magico, pero por curiosidad esa aplicacion sera para el famoso concurso del foro??
En línea

Simplemente .::IT::.
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: GZipStream: Problema con numero magico
« Respuesta #26 en: 10 Noviembre 2010, 23:47 pm »

Nono, para nada. No estaba enterado de que este año hubiera concurso, participe aquella vez en el 2007 porque era un miembro muy activo del foro. Si bien, este proyecto es muy similar, no tiene relacion alguna con el Xeon Web Server, ni con el concurso. Es un desarrollo personal, que hace un tiempito vengo planeando y cuando la version 1.0 este lista y funcional, voy a subirla para que puedan utilizarla (subir archivos a file servers).


Saludos, Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con cuadrado mágico [RESUELTO]
Programación C/C++
bigfu 7 12,308 Último mensaje 14 Enero 2016, 02:11 am
por Dayciber
Cuadrado Mágico
Programación C/C++
Black Lotus 5 4,582 Último mensaje 15 Marzo 2013, 20:58 pm
por Black Lotus
Pasar programa de Ciclo if a for (cuadro magico)
.NET (C#, VB.NET, ASP)
ellandax 1 2,004 Último mensaje 19 Noviembre 2013, 21:00 pm
por Eleкtro
Cuadrado Mágico
Programación C/C++
anaaaaaaa 3 6,874 Último mensaje 7 Diciembre 2015, 16:37 pm
por ivancea96
cuadrado magico
Dudas Generales
manno 1 1,806 Último mensaje 5 Julio 2020, 02:15 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines