예제 #1
0
 protected internal void AddConnection(ClientObject clientObject)
 {
     clients.Add(clientObject);
 }
예제 #2
0
        private static void ServerDoSomething(object obj)
        {
            TcpClient tcpClient = (TcpClient)obj;
            string    ip        = tcpClient.Client.RemoteEndPoint.ToString();

            if (tcpClient == null)
            {
                return;
            }
            ClientObject clientObject = new ClientObject()
            {
                ip          = ip,
                timeconnect = DateTime.Now
            };

            clientObjects.Add(clientObject);
            using (NetworkStream networkStream = tcpClient.GetStream())
            {
                byte[] vs1 = Encoding.UTF8.GetBytes("Hello World");
                networkStream.Write(vs1, 0, vs1.Length);
                int byteRead;
                while (true)
                {
                    byteRead = 0;
                    try
                    {
                        byte[] vs = new byte[1024];
                        byteRead = networkStream.Read(vs, 0, vs.Length);
                        if (byteRead > 0)
                        {
                            string s = Encoding.UTF8.GetString(vs);
                            s = s.Substring(0, s.IndexOf('\0'));
                            Console.WriteLine(s);
                            if (s.Contains("313233343536"))
                            {
                                vs1 = Encoding.UTF8.GetBytes("ปลาหยุด");
                                networkStream.Write(vs1, 0, vs1.Length);
                            }
                            if (s.Contains("363534333231"))
                            {
                                vs1 = Encoding.UTF8.GetBytes("ปลาวิด");
                                networkStream.Write(vs1, 0, vs1.Length);
                            }
                            else
                            {
                                vs1 = Encoding.UTF8.GetBytes("Answer wrong");
                                networkStream.Write(vs1, 0, vs1.Length);
                            }
                            ClientAnswerObject clientAnswerObject = new ClientAnswerObject()
                            {
                                ip   = ip,
                                time = DateTime.Now,
                                data = s
                            };
                            clientAnswerObjects.Insert(0, clientAnswerObject);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                        break;
                    }
                    if (byteRead == 0)
                    {
                        break;
                    }
                }
                ClientObject clientObject1 = clientObjects.Find(x => x.ip == tcpClient.Client.RemoteEndPoint.ToString());
                if (clientObject1 != null)
                {
                    clientObjects.Remove(clientObject1);
                }
            }
        }