示例#1
0
        public void Listen()
        {
            while (true)
            {
                try {
                    byte[] bytes    = new Byte[1024];
                    int    recBytes = client.Receive(bytes); // Blocking
                    if (recBytes == 0)
                    {
                        break;                // klienten stängd => 0
                    }
                    var nettoBytes = (bytes.Take(recBytes)).ToArray <byte>();

                    string response = Encoding.UTF8.GetString(bytes, 0, recBytes);
                    if (response == "x")
                    {
                        break;
                    }
                    SocketHelper.BroadCast(client, nettoBytes);
                    // Console.Write(response);

                    //Console.WriteLine("Skickar tid...");
                    //var time = DateTime.Now.ToLongTimeString();
                    //client.Send(Encoding.UTF8.GetBytes(time));
                }
                catch
                {
                    break;
                }
            }
            Console.WriteLine("Klienten stänger");
            SocketHelper.connections.Remove(client);
            client.Close();
            Console.WriteLine(SocketHelper.connections.Count + " klienter inloggade");
        }
示例#2
0
        private void RecieveAndBroadCast(Socket client)
        {
            while (true)
            {
                try
                {
                    byte[] bytes    = new Byte[1024];
                    int    recBytes = client.Receive(bytes); // Blocking
                    //var player = _players.Single(x => x.Client.RemoteEndPoint == client.RemoteEndPoint);

                    if (recBytes == 0)
                    {
                        //_players.Remove(player);
                        SocketHelper.BroadCast(client, Encoding.UTF8.GetBytes("Opponent disconnected"));
                        break; // klienten stängd => 0
                    }

                    var nettoBytes = (bytes.Take(recBytes)).ToArray <byte>();

                    string response = Encoding.UTF8.GetString(bytes, 0, recBytes);
                    SocketHelper.BroadCast(client, nettoBytes);


                    //Console.WriteLine(player.Symbol + " sending: " + response);
                }
                catch
                {
                    break;
                }
            }
        }