コード例 #1
0
        static void Main(string[] args)
        {
            MessageRecievedListener mrl = delegate(string s)
            {
                //TODO add code here
            };

            chatServer.start(mrl);
        }
コード例 #2
0
        /// <summary>
        /// Starts the server going and taking connections
        /// </summary>
        public void start(MessageRecievedListener mrl)
        {
            if (running)
            {
                return;
            }
            myMRL            = mrl;
            chatSenderThread = delegate(object o)
            {
                ChatServer cs = (ChatServer)o;
                while (!(cs.running && cs.clients.Count != 0))
                {
                }
                ClientInfo ci         = cs.clients.Last <ClientInfo>();
                Socket     s          = ci.socket;
                byte[]     name_bytes = new byte[bufferSize];
                s.Receive(name_bytes);
                ci.name    = Encoding.ASCII.GetString(ChatServer.noNulls(name_bytes));
                name_bytes = Encoding.ASCII.GetBytes(ci.name + ": ");
                while (true)
                {
                    try {
                        byte[] bytes = new byte[bufferSize];
                        s.Receive(bytes);
                        bytes = ChatServer.noNulls(bytes);
                        string msg = Encoding.ASCII.GetString(bytes);
                        //Console.WriteLine("Server Recieved bytes:"+msg);
                        cs.myMRL(ChatServer.getTimeStamp() + " " + ci.name + ": " + msg);
                        cs.broadcast(ChatServer.conCat(name_bytes, bytes), s);
                    } catch (SocketException e) {
                        //Console.WriteLine(e.StackTrace);
                    }
                }
            };
            MyServer.Listen(5);
            running = true;
            ParameterizedThreadStart receptions = delegate(object o)
            {
                ChatServer cs = (ChatServer)o;
                while (running)
                {
                    cs.clients.Add(new ClientInfo(MyServer.Accept()));
                    newChatThread();
                }
            };

            addThread(receptions);
        }
コード例 #3
0
        /// <summary>
        /// Starts the listener thread given
        /// </summary>
        /// <param name="mrl">The messager thread</param>
        public void start(MessageRecievedListener mrl)
        {
            ParameterizedThreadStart pts = delegate(object o)
            {
                ChatClient cc = (ChatClient)o;
                while (true)
                {
                    string s = cc.recieve();
                    //Console.WriteLine("Client recieved bytes:"+s);
                    mrl(s);
                }
            };
            Thread t = new Thread(pts);

            t.Start(this);
            this.send(this.myName);
        }
コード例 #4
0
        public static void Main()
        {
            ChatServer server = new ChatServer(1341);
            //server.start();
            ChatClient client           = new ChatClient("144.118.118.68", 1341);
            MessageRecievedListener mrl = delegate(string s)
            {
                Console.WriteLine(s);
            };

            client.start(mrl);
            Console.WriteLine("Type your text:");
            while (true)
            {
                client.send(Console.ReadLine());
            }
        }
コード例 #5
0
 public void start(MessageRecievedListener mrl, string username)
 {
     this.myName = username;
     start(mrl);
 }
コード例 #6
0
        public static void Main()
        {
            Console.WriteLine("Server or client?");
            string response = Console.ReadLine();

            if (response.ToUpper() == "SERVER")
            {
                Console.WriteLine("Port?");
                int        port             = getInt();
                ChatServer cs               = new ChatServer(port);
                MessageRecievedListener mrl = delegate(string s)
                {
                    Console.WriteLine(s);
                };
                cs.start(mrl);
                Console.WriteLine("Server started on port " + port + " type \"/quit\" to close.");
                while (true)
                {
                    response = Console.ReadLine();
                    if (response.ToUpper() == "/QUIT")
                    {
                        cs.stop();
                        Environment.Exit(0);
                        break;
                    }
                    else
                    {
                        cs.broadcast("SERVER ADMIN:" + response);
                    }
                }
            }
            else if (response.ToUpper() == "CLIENT")
            {
                Console.WriteLine("IP?");
                System.Net.IPAddress ip = getIP();
                while (ip == null)
                {
                    Console.WriteLine("Invalid input");
                    ip = getIP();
                }
                Console.WriteLine("Port?");
                int        port = getInt();
                ChatClient cc   = new ChatClient(ip, port);
                Console.WriteLine("Connected to server. Do you want to use a username? Y/N");
                response = Console.ReadLine();

                MessageRecievedListener mrl = delegate(string str)
                {
                    Console.WriteLine(str);
                };
                if (response.ToUpper() == "Y" || response.ToUpper() == "YES")
                {
                    Console.WriteLine("Well type it in then.");
                    cc.start(mrl, Console.ReadLine());
                }
                else
                {
                    cc.start(mrl);
                }
                Console.WriteLine("Chat is now open.");
                response = Console.ReadLine();
                while (!(response.ToUpper() == "/QUIT"))
                {
                    cc.send(response);
                    response = Console.ReadLine();
                }
                Environment.Exit(0);
            }
        }