|
135
|
Programación / .NET (C#, VB.NET, ASP) / Re: GZipStream: Problema con numero magico
|
en: 10 Noviembre 2010, 22:20 pm
|
Sancho.Mazorka acabo de hacer pruebas con lo siguiente Codigo en Vb .net 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# 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=UFUG594Ves 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.
|
|
|
136
|
Programación / .NET (C#, VB.NET, ASP) / Re: Conectar a un Servidor por Internet
|
en: 9 Noviembre 2010, 19:22 pm
|
mi estimado "choclito" si estas en face de diseño pues deberias usar Web Service como recomienda "MANULOMM" sobre todo por la seguridad de base de datos.
y bueno si ya tienes tu aplicacion ya terminada pues lo mas barato es una VPN, y aún asi tu aplicacion no es segura ya que si tu colocas tus metodos de manejo de la base de datos(INSERT,UPDATE, ETC)en tu aplicacion pues tambien vas ah tener que colocar la cadena de conexion y esa es muy facil recuperarla ya que VB .net(y cualqueir lenguaje .net) no genera codigo nativo(y anunque lo generara igual se puede recuperar las cadenas de conexion si es que estan en el programa). Por eso y por muchas Cosas mas existen software de terceros como "tarantella" que permiten hostear tu aplicacion en internet pero si son costosas.
Suerte Choclo tu puedes!!!!!!!!!!!
|
|
|
137
|
Programación / .NET (C#, VB.NET, ASP) / Re: Conectar a un Servidor por Internet
|
en: 8 Noviembre 2010, 17:38 pm
|
"Choclito" lamento decepcionarte pero si estas usando bases de datos de archivo(Excel, access entre otros) vas ah poder conectarte ah ellas usando software de terceros ya sea el famoso hamachi ,OPenvpn entre otros, en mi opinión te recomiendo Openvpn es un poco mas difícil de configurar que el hamachi(que es muy fácil)pero es mas rápido, como recomendación seria que uses motores de bases de datos como Postgresl,MySQL, MSSQl, Oracle etc. Y casi lo olvido conectarse ah una base de datos de archivo por Internet es muy pero muy lento, y para terminar si usas Windows Xp para adelante pues puedes montar una VPN casera que por cierto es mas rápida que openvpn(yo lo probé y te lo puedo garantizar) de dejo el link cualquier duda consulta en el foro http://www.elguille.info/sistema/VPN/vpn_servidor.aspx
|
|
|
138
|
Programación / .NET (C#, VB.NET, ASP) / Re: GZipStream: Problema con numero magico
|
en: 6 Noviembre 2010, 06:52 am
|
Sancho.Mazorka pucha ahora si me acaba de entrar la intriga al parecer el metodo Read de los MemoryStream no funciona muy bien en VB pero si en c# Codigo en C# todo funciona ok using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Compression;
namespace GZipStreamC
{
class Program
{
static void Main(string[] args)
{
string myDescomprimido;
string myComprimido;
Console.WriteLine("Ingrese Palabra");
myDescomprimido = Console.ReadLine();
myComprimido= Zip(myDescomprimido);
Console.WriteLine("");
Console.WriteLine("\"{0}\" comprimido = {1}", myDescomprimido, myComprimido);
Console.WriteLine("");
Console.WriteLine("\"{0}\" descomprimido = {1}", myDescomprimido, UnZip(myComprimido));
Console.ReadKey();
}
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);
}
public static string UnZip(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
}
}
}
Equibalente en Vb .net no descomprime el UnZip el error del numero magico se produce cuando cambias la linea Dim gzBuffer() As Byte = Convert.FromBase64String(compressedText) del metodo UnZip por System.Text.Encoding.ASCII.GetBytes(compressedText) Y la verdad la cosa es muy rara ya que todo esta bien una solucion seria colocar el metodo UnZip en una libreria externa echa en c# y agregarla a tu proyecto. Imports System.Text
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Dim myDescomprimido As String
Dim myComprimido As String
Console.WriteLine("Ingrese Palabra")
myDescomprimido = Console.ReadLine()
myComprimido = Zip(myDescomprimido)
Console.WriteLine("")
Console.WriteLine("{0} comprimido = {1}", myDescomprimido, myComprimido)
Console.WriteLine("")
Console.WriteLine("{0} descomprimido = {1}", myDescomprimido, UnZip(myComprimido))
Console.ReadKey()
End Sub
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
Public Function UnZip(ByVal compressedText As String) As String
Dim gzBuffer() As Byte = Convert.FromBase64String(compressedText)
Dim ms As New MemoryStream()
Dim msgLength As Integer = BitConverter.ToInt32(gzBuffer, 0)
ms.Write(gzBuffer, 4, gzBuffer.Length - 4)
Dim buffer(msgLength) As Byte
ms.Position = 0
Dim _zip As GZipStream = New GZipStream(ms, CompressionMode.Decompress)
_zip.Read(buffer, 0, buffer.Length - 1)
Return Encoding.UTF8.GetString(buffer)
End Function
End Module
|
|
|
|
|
|
|