Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: boy-ka en 11 Abril 2015, 23:33 pm



Título: Enviar caracteres ascii por sockets
Publicado por: boy-ka en 11 Abril 2015, 23:33 pm
Hola gente tengo una duda, y es como enviar acentos y caracteres ascii por sockets en c#.

Lo trato de hacer de esta manera, pero no me funciona, servidor:

Código
  1.        static void Main(string[] args)
  2.        {
  3.            Console.ForegroundColor = ConsoleColor.Gray;
  4.            TcpListener server = new TcpListener(IPAddress.Any, 4001);
  5.            server.Start();
  6.            Console.ForegroundColor = ConsoleColor.Green;
  7.            Console.WriteLine("Server initialized listen port: 2001");
  8.            byte[] packet = new byte[100];
  9.            while (true)
  10.            {
  11.                TcpClient cliente = server.AcceptTcpClient();
  12.                NetworkStream conexion_cliente = cliente.GetStream();
  13.                int i = conexion_cliente.Read(packet, 0, packet.Length);
  14.                string msg_cliente = Encoding.ASCII.GetString(packet);
  15.                cliente.Flush();
  16.                cliente.Close();
  17.                Console.WriteLine(msg_cliente);
  18.  
  19.  
  20.            }
  21.        }
  22.  
  23.  

CLIENTE:

Código
  1.  
  2.        public static void Load()
  3.        {
  4.            try
  5.            {
  6.                TcpClient cliente = new TcpClient("127.0.0.1", 4001);
  7.                NetworkStream StreamConexion = cliente.GetStrean();
  8.                byte[] data = Encoding.ASCII.GetBytes("Áss ácéntó");
  9.                StreamConexion.Write(data,0,data.Length);
  10.                StreamConexion.Flush();
  11.  
  12.            }
  13.            catch
  14.            {
  15.            }
  16.        }
  17.  

El problema radica en que cuando el cliente envía una palabra normal, como por ejemplo "hola", en el servidor me lo imprime bien, pero cuando envío palabras acentuadas me la muestra mal, todo raro, quisiera saber cuál sería la solución para poder recibir los mensajes con acentos y con carácteres ASCII, porque por ejemplo con algunos caracteres ASCII funciona, como este: @ # $ % !, pero con algunos otros no, gracias de ante mano.


Título: Re: Enviar caracteres ascii por sockets
Publicado por: kub0x en 11 Abril 2015, 23:48 pm
ASCII no contiene la mayoría de acentuaciones, tienes que utilizar otro juego o formato de caracteres como UTF-8 o UTF-16.

Saludos.


Título: Re: Enviar caracteres ascii por sockets
Publicado por: DarK_FirefoX en 11 Abril 2015, 23:51 pm
Como bien dice kub0x. Estás codificando el string en ASCII (acrónimo inglés de American Standard Code for Information InterchangeCódigo Estándar Estadounidense para el Intercambio de Información), y ASCII no incluye los símbolos con acentos (y otros varios), debes hacerlo con UTF-8.

Debes usar:

Código
  1. string msg_cliente = Encoding.UTF8.GetString(packet);

Salu2s


Título: Re: Enviar caracteres ascii por sockets
Publicado por: boy-ka en 11 Abril 2015, 23:59 pm
Como bien dice kub0x. Estás codificando el string en ASCII (acrónimo inglés de American Standard Code for Information InterchangeCódigo Estándar Estadounidense para el Intercambio de Información), y ASCII no incluye los símbolos con acentos (y otros varios), debes hacerlo con UTF-8.

Debes usar:

Código
  1. string msg_cliente = Encoding.UTF8.GetString(packet);

Salu2s

Excelente, muchisimas gracias.