Foros del Web » Programación para mayores de 30 ;) » .NET »

mensajes privados con socket en c#

Estas en el tema de mensajes privados con socket en c# en el foro de .NET en Foros del Web. hola, veran necesito implementar en un servidor que se maneja con socket lo que se llama mensajes privados utilizando Thread, pero no comprendo bien como ...
  #1 (permalink)  
Antiguo 04/08/2012, 11:30
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta mensajes privados con socket en c#

hola, veran necesito implementar en un servidor que se maneja con socket lo que se llama mensajes privados utilizando Thread, pero no comprendo bien como va la idea yo tengo un servidor que maneja Thread y al enviar un mensaje desde un cliente se le envia a todos y lo que necesito es que se le envie solamente al usuario que el cliente elija pero no tengo idea de como implementarlo en el servidor veran este es el servidor que me habian dado hace un tiempo gracias

Código:
using System;

using System.Threading;

using System.Net.Sockets;

using System.Text;

using System.Collections;



namespace ConsoleApplication1
{

    class Program
    {

        public static Hashtable clientsList = new Hashtable();



        static void Main(string[] args)
        {

            TcpListener serverSocket = new TcpListener(8888);

            TcpClient clientSocket = default(TcpClient);

            int counter = 0;



            serverSocket.Start();

            Console.WriteLine("Chat Server Started ....");

            counter = 0;

            while ((true))
            {

                counter += 1;

                clientSocket = serverSocket.AcceptTcpClient();



                byte[] bytesFrom = new byte[10025];

                string dataFromClient = null;



                NetworkStream networkStream = clientSocket.GetStream();

                networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);

                dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);

                dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));



                clientsList.Add(dataFromClient, clientSocket);



                broadcast(dataFromClient + " Joined ", dataFromClient, false);



                Console.WriteLine(dataFromClient + " Joined chat room ");

                handleClinet client = new handleClinet();

                client.startClient(clientSocket, dataFromClient, clientsList);
                

            }



            clientSocket.Close();

            serverSocket.Stop();

            Console.WriteLine("exit");

            Console.ReadLine();

        }



        public static void broadcast(string msg, string uName, bool flag)
        {

            foreach (DictionaryEntry Item in clientsList)
            {

                TcpClient broadcastSocket;

                broadcastSocket = (TcpClient)Item.Value;

                NetworkStream broadcastStream = broadcastSocket.GetStream();

                Byte[] broadcastBytes = null;



                if (flag == true)
                {

                    broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg);

                }

                else
                {

                    broadcastBytes = Encoding.ASCII.GetBytes(msg);

                }



                broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length);

                broadcastStream.Flush();

            }

        }  //end broadcast function

    }//end Main class





    public class handleClinet
    {

        TcpClient clientSocket;

        string clNo;

        Hashtable clientsList;



        public void startClient(TcpClient inClientSocket, string clineNo, Hashtable cList)
        {

            this.clientSocket = inClientSocket;

            this.clNo = clineNo;

            this.clientsList = cList;

           Thread ctThread = new Thread(doChat);

            ctThread.Start();

        }



        private void doChat()
        {

            int requestCount = 0;

            byte[] bytesFrom = new byte[10025];

            string dataFromClient = null;

            Byte[] sendBytes = null;

            string serverResponse = null;

            string rCount = null;

            requestCount = 0;



            while ((true))
            {

                try
                {

                    requestCount = requestCount + 1;

                    NetworkStream networkStream = clientSocket.GetStream();

                    networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);

                    dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);

                    dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));

                    Console.WriteLine("From client - " + clNo + " : " + dataFromClient);

                    rCount = Convert.ToString(requestCount);



                    Program.broadcast(dataFromClient, clNo, true);

                }

                catch (Exception ex)
                {

                    Console.WriteLine(ex.ToString());

                }

            }//end while

        }//end doChat

    } //end class handleClinet

}//end namespace

Etiquetas: mensajes_privados, net, socjet_en_c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:00.