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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Enviar caracteres ascii por sockets
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Enviar caracteres ascii por sockets  (Leído 3,275 veces)
boy-ka

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Enviar caracteres ascii por sockets
« 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.


« Última modificación: 11 Abril 2015, 23:37 pm por boy-ka » En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.468


S3C M4NI4C


Ver Perfil
Re: Enviar caracteres ascii por sockets
« Respuesta #1 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.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.255


Be the change you wanna see in te world


Ver Perfil
Re: Enviar caracteres ascii por sockets
« Respuesta #2 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
En línea

boy-ka

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Enviar caracteres ascii por sockets
« Respuesta #3 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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Creando archivos binarios en Batch con una serie de caracteres ascii
Scripting
-[black_hack]- 0 2,594 Último mensaje 2 Marzo 2008, 22:11 pm
por -[black_hack]-
caracteres ascii
Windows
roxie 2 3,611 Último mensaje 14 Septiembre 2010, 20:34 pm
por jadara
Letras para MSN - caracteres especiales ASCII
Software
granulia 1 2,298 Último mensaje 3 Julio 2011, 00:53 am
por SuperDraco
cadena de caracteres a ASCII
Programación C/C++
sabar 5 2,398 Último mensaje 2 Diciembre 2014, 01:50 am
por rir3760
Tabla ASCII en C++ caracteres de control
Programación C/C++
loriik 7 7,419 Último mensaje 30 Agosto 2016, 15:55 pm
por loriik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines