예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter the server IP and port in the format 192.168.0.1:10000 and press return:");
            string serverInfo = Console.ReadLine();

            string serverIP   = serverInfo.Split(':').First();
            int    serverPort = int.Parse(serverInfo.Split(':').Last());

            int loopCounter = 1;

            while (true)
            {
                string messageToSend = Console.ReadLine();
                Console.WriteLine("Sending message to server saying '" + messageToSend + "'");

                NetworkComms.SendObject("Message", serverIP, serverPort, messageToSend);

                Console.WriteLine("\nPress escape to quit or any other key to send another message.");
                if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                {
                    break;
                }
                else
                {
                    loopCounter++;
                }
            }

            NetworkComms.Shutdown();
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter the server IP and port in the format 192.168.0.1:10000 and press return:");

            string serverIP   = "127.0.0.1";
            int    serverPort = 5245;

            int loopCounter = 1;

            while (true)
            {
                string messageToSend = "This is message #" + loopCounter;
                Console.WriteLine("Sending message to server saying '" + messageToSend + "'");


                Console.WriteLine("\nPress q to quit or any other key to send another message.");
                if (Console.ReadKey(true).Key == ConsoleKey.Q)
                {
                    break;
                }
                else
                {
                    Console.Read();

                    getData("TextFile1.txt");
                    NetworkComms.SendObject("FileData", serverIP, serverPort, data);
                }
            }

            NetworkComms.Shutdown();
        }
예제 #3
0
        public bool RequestBlock(int height)
        {
            List <Peer> onlinePeers = new List <Peer>();

            foreach (Peer peer in peers.peers_list)
            {
                if (peer.connected && peer.ip_address != CurrentIPAddress() && peer.blockheight > height)
                {
                    onlinePeers.Add(peer);
                }
            }
            if (onlinePeers.Count > 0)
            {
                Random rnd         = new Random();
                Peer   random_peer = onlinePeers.ElementAt(rnd.Next(onlinePeers.Count));

                //MessageBox.Show("Requesting Block from " + random_peer.ip_address);
                NetworkComms.SendObject("SendBlock", random_peer.ip_address, serverPort, new Tuple <string, int>(CurrentIPAddress(), height));

                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #4
0
파일: Network.cs 프로젝트: liangyee/Wizard
 public Boolean SendBid(Bid bid, Player player)
 {
     if (player == null)
     {
         if (runState == State.Client)
         {
             if (!CheckConnection())
             {
                 return(false);
             }
             try {
                 NetworkComms.SendObject("Bid", serverIP, serverPort, bid);
                 return(true);
             } catch (Exception e) {
                 baseClass.NetworkError("[SendBid] SendBid: " + e.Message);
                 return(false);
             }
         }
         else
         {
             baseClass.NetworkError("[Error] SendBid: the server cannot send bids to itself. Check that player is not null.");
             return(false);
         }
     }
     else
     {
         try {
             NetworkComms.SendObject("Bid", player.IP, player.Port, bid);
             return(true);
         } catch (Exception e) {
             baseClass.NetworkError("[SendBid] SendBid: " + e.Message);
             return(false);
         }
     }
 }
예제 #5
0
파일: Network.cs 프로젝트: liangyee/Wizard
        public Boolean SendLeaveGameMessage(Player leavingPlayer, Player specificPlayer = null)
        {
            if (runState == State.Client)
            {
                try {
                    NetworkComms.SendObject("LeaveGameMessage", serverIP, serverPort, leavingPlayer);
                    CloseClient();
                    return(true);
                } catch (Exception e) {
                    baseClass.NetworkError("[SendLeaveGameMessage] SendLeaveGameMessage: " + e.Message);
                    return(false);
                }
            }
            else if (runState == State.Server)
            {
                try {
                    NetworkComms.SendObject("LeaveGameMessage", specificPlayer.IP, specificPlayer.Port, leavingPlayer);
                    return(true);
                } catch (Exception e) {
                    baseClass.NetworkError("[SendLeaveGameMessage] SendLeaveGameMessage: " + e.Message);
                    return(false);
                }
            }

            return(false);
        }
예제 #6
0
        static void Main(string[] args)
        {
            NetworkComms.AppendGlobalIncomingPacketHandler <PlayerObject>("Message", PrintIncomingMessage);

            Console.WriteLine("Please enter the server IP and port in the format 192.168.0.1:10000 and press return:");
            string serverInfo = Console.ReadLine();

            serv.serverIp   = serverInfo.Split(':').First();
            serv.serverPort = int.Parse(serverInfo.Split(':').Last());

            while (end != true)
            {
                if (once == false)
                {
                    PlayerObject message = new PlayerObject(5, tmp, "Connected");
                    NetworkComms.SendObject("Message", serv.serverIp, serv.serverPort, message);
                    once = true;
                }
                if (Equals(Console.ReadLine(), "PLAY") == true)
                {
                    PlayerObject message = new PlayerObject(20, tmp, "Play from player" + PlayerId);
                    Console.WriteLine("The card played is : " + tmp[0].ToString());
                    NetworkComms.SendObject("Message", serv.serverIp, serv.serverPort, message);
                }
            }
            NetworkComms.Shutdown();
        }
예제 #7
0
파일: Network.cs 프로젝트: liangyee/Wizard
        public Boolean CloseServer()
        {
            if (runState == State.Server || runState == State.None)
            {
                foreach (Player player in playerList.GetPlayers())
                {
                    try {
                        NetworkComms.SendObject("ServerStopped", player.IP, player.Port, new Player("Server", -1));
                        Thread.Sleep(SLEEP_TIME);
                    } catch (Exception e) {
                        Console.WriteLine("[CloseServer] " + e.Message);
                    }
                }

//				if (MainGame.Instance.HostOnly) baseClass.ServerStopped();
                playerList.ClearPlayers();
                Connection.StopListening();
                NetworkComms.RemoveGlobalIncomingPacketHandler();
                NetworkComms.CloseAllConnections();
//				NetworkComms.Shutdown ();
                baseClass.NetworkStopped();
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #8
0
        private void connectButton_Click(object sender, EventArgs e)
        {
            if (isValidIPAddress())
            {
                try
                {
                    String serverInfo = ipAddressTextBox.Text;
                    //Parse the necessary information out of the provided string
                    serverIP   = serverInfo.Split(':').First();
                    serverPort = int.Parse(serverInfo.Split(':').Last());

                    // Handle error connection request
                    NetworkComms.AppendGlobalIncomingPacketHandler <string>("connectionInfo", HandleConnectionInfo);
                    NetworkComms.AppendGlobalIncomingPacketHandler <string>("success", HandleSuccessConnection);
                    NetworkComms.AppendGlobalIncomingPacketHandler <string>("error", HandleErrorConnection);

                    //Send the message in a single line
                    NetworkComms.SendObject("RequestConnectionInfo", serverIP, serverPort, "");
                    connected             = true;
                    connectButton.Enabled = false;
                }
                catch
                {
                    MessageBox.Show("Could not connect to requested IP and port");
                }
            }
            else
            {
                MessageBox.Show("Invalid IP and port entered");
            }
        }
예제 #9
0
        private void PeerDiscovery_OnPeerDiscovered(ShortGuid peerIdentifier, Dictionary <ConnectionType, List <EndPoint> > discoveredListenerEndPoints)
        {
            if (!IsConnected)
            {
                foreach (KeyValuePair <ConnectionType, List <EndPoint> > connection in discoveredListenerEndPoints)
                {
                    if (connection.Key == ConnectionType.TCP)
                    {
                        foreach (EndPoint ep in connection.Value)
                        {
                            if (IsConnected)
                            {
                                break;
                            }

                            IPEndPoint ipEndPoint = ep as IPEndPoint;

                            if (ipEndPoint.Address.ToString().StartsWith("192"))
                            {
                                try
                                {
                                    NetworkComms.SendObject("ClientConnect", ipEndPoint.Address.ToString(), ipEndPoint.Port, ClientId);
                                }
                                catch (CommsException ex)
                                {
                                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #10
0
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter the server IP and port in the format 192.168.0.1:10000 and press return:");

            string serverIP   = "127.0.0.1";
            int    serverPort = 5245;

            int loopCounter = 1;

            while (true)
            {
                string messageToSend = "This is message #" + loopCounter;
                Console.WriteLine("Sending message to server saying '" + messageToSend + "'");


                Console.WriteLine("\nPress q to quit or any other key to start Game");
                if (Console.ReadKey(true).Key == ConsoleKey.Q)
                {
                    break;
                }
                else
                {
                    Deck deck = new Deck();
                    deck.generateCardDeck();
                    deck.displayDeck();
                    Console.Read();


                    NetworkComms.SendObject("Welcome", serverIP, serverPort, "Witam");
                }
            }

            NetworkComms.Shutdown();
        }
예제 #11
0
 private void shooterConnectButton_Click(object sender, EventArgs e)
 {
     if (connected)
     {
         NetworkComms.SendObject("ConnectionRequest", serverIP, serverPort, "shooter");
     }
 }
 /// <summary>
 /// 傳送檔案
 /// </summary>
 /// <param name="Token">權杖</param>
 /// <param name="IPaddress">IP位址</param>
 /// <param name="Port">Port號</param>
 /// <param name="FilePath">檔案路徑</param>
 public void FileFunction(string Token, string IPaddress, int Port, string FilePath)
 {
     try
     {
         FileStream   fileStream   = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
         StreamReader streamReader = new StreamReader(fileStream);
         DataTable    dataTable    = new DataTable();
         bool         IsFirst      = true;
         string       strline      = null;
         while ((strline = streamReader.ReadLine()) != null)
         {
             if (IsFirst)
             {
                 try
                 {
                     ThreadSafeStream  threadSafeStream = new ThreadSafeStream(fileStream);
                     StreamSendWrapper sendWrapper      = new StreamSendWrapper(threadSafeStream, 0, fileStream.Length);
                     NetworkComms.SendObject(Token, IPaddress, Port, sendWrapper);
                     fileStream.Close();
                 }
                 catch (ArgumentException ex) { Log.Error("網路通訊異常請檢查", ex); ErrorStr = "網路通訊異常請檢查"; }
                 catch (ConnectionSetupException ex) { Log.Error("網路通訊異常請檢查", ex); ErrorStr = "網路通訊異常請檢查"; }
                 catch (ConnectionSendTimeoutException ex) { Log.Error("接收端程式異常", ex); ErrorStr = "接收端程式異常"; }
                 catch (Exception ex) { Log.Error(ex, "傳送檔案失敗"); }
             }
             break;
         }
     }
     catch (FileNotFoundException ex) { Log.Error("搜尋不到或未有檔案產生", ex); ErrorStr = "搜尋不到或未有檔案產生"; }
     catch (ObjectDisposedException ex) { Log.Error("檔案刪除後未有檔案產生", ex); ErrorStr = "檔案刪除後未有檔案產生"; }
     catch (DirectoryNotFoundException ex) { Log.Error("找不到檔案路徑", ex); ErrorStr = "找不到檔案路徑"; }
 }
예제 #13
0
        /// <summary>
        /// Print the connection request received from a client
        /// </summary>
        /// <param name="header">The packet header associated with the incoming message</param>
        /// <param name="connection">The connection used by the incoming message</param>
        /// <param name="message">The message to be printed to the console</param>
        private static void PrintConnectRequest(PacketHeader header, Connection connection, string message)
        {
            string clientIp   = GetIp(connection.ToString());
            int    clientPort = GetPort(connection.ToString());

            Console.WriteLine(connection.ToString() + " --> " + message);

            Message obj = JsonConvert.DeserializeObject <Message>(message);
            Player  p   = new Player()
            {
                Name = obj.Content, Ip = clientIp, Port = clientPort, Cards = new List <Card>(), Crédit = 10000
            };
            Plateau plateau = new Plateau()
            {
                Player = p, Cards = new Deck(), Player2 = new IA()
                {
                    Cards = new List <Card>(), Crédit = 10000
                }
            };

            parties.Add(plateau);
            foreach (Card c in plateau.Cards.getCards(5))
            {
                plateau.Player.Cards.Add(c);
            }
            string returned_plat = JsonConvert.SerializeObject(plateau);
            string res           = JsonConvert.SerializeObject(new Message()
            {
                Content = returned_plat
            });

            NetworkComms.SendObject("Start Turn", p.Ip, p.Port, res);
        }
예제 #14
0
        public void Validation(PacketHeader header, Connection connection, string Anss)
        {
            IPClnt = connection.ConnectionInfo.RemoteEndPoint.ToString();
            IPClnt = IPClnt.Remove(IPClnt.IndexOf(':'));
            DialogResult dr = MessageBox.Show("A request from " + IPClnt + " Recieved.", "Request Recieved!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

            if (dr == DialogResult.OK)
            {
                NetworkComms.SendObject("ConnectAnswer", IPClnt, 9999, "OK");
                Status.Invoke(new Updatee(() => Status.Text = IPClnt + " Connected..."));
                Bitmap     bm = new Bitmap(ScreenRectangle.Width, ScreenRectangle.Height, PixelFormat.Format24bppRgb);
                Bitmap     bp = IP.TakeScreenShot(bm);
                List <int> rt = new List <int>();
                rt.Add(ScreenRectangle.Width);
                rt.Add(ScreenRectangle.Height);
                NetworkComms.SendObject("ScreenSize", IPClnt, 9999, rt);
                connectionstate = 1;
                //Viewer vw = new Viewer();
                StartTimer();
                //vw.ShowDialog();
            }
            else
            {
                NetworkComms.SendObject("ConnectAnswer", IPClnt, 9999, "NO");
                connection.CloseConnection(false);
            }
        }
예제 #15
0
        //Útok na klienta 2
        public void FireOnClient2(GridPosition position)
        {
            if (Client2ShipPositions.Any(x => x.Equals(position)))
            {
                GridPosition pos = Client2ShipPositions.Find(x => x.Equals(position));
                pos.IsHit = true;

                NetworkComms.SendObject("GamePositionUpdateInfo", Client2.Ip, Client2.Port, new GamePositionUpdateInfo(pos, UpdateType.PlayerGrid, false));
                NetworkComms.SendObject("GamePositionUpdateInfo", Client1.Ip, Client1.Port, new GamePositionUpdateInfo(pos, UpdateType.EnemyGrid, true));
            }
            else
            {
                GridPosition pos = new GridPosition(position.X, position.Y);
                pos.IsMissed = true;

                NetworkComms.SendObject("GamePositionUpdateInfo", Client2.Ip, Client2.Port, new GamePositionUpdateInfo(pos, UpdateType.PlayerGrid, true));
                NetworkComms.SendObject("GamePositionUpdateInfo", Client1.Ip, Client1.Port, new GamePositionUpdateInfo(pos, UpdateType.EnemyGrid, false));
            }

            if (Client2ShipPositions.All(x => x.IsHit))
            {
                Console.WriteLine($"(Hra #{Id}) {Client1.Name} vyhrál!");
                NetworkComms.SendObject("EndGameInfo", Client1.Ip, Client1.Port, true);
                NetworkComms.SendObject("EndGameInfo", Client2.Ip, Client2.Port, false);

                _reset = true;
            }
        }
예제 #16
0
        //Připojení klienta k serveru
        private static void ConnectUser(PacketHeader packetheader, Connection connection, string name)
        {
            IPEndPoint clientEndPoint = (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint;

            //Uživatel se stejným jménem již existuje
            if (Clients.Any(x => x.Name == name))
            {
                string reason = string.Format($"Uživatelské jméno {name} je již zabrané!");

                ConnectResponse response = new ConnectResponse(ResponseType.Rejected, ServerName, reason);
                connection.SendObject("ConnectInfo", response);

                Console.WriteLine($"{name} se nepodařilo připojit k serveru z důvodu: {reason}");
            }
            //Přidání hráče
            else
            {
                Clients.Add(new Client(name, clientEndPoint.Address.ToString(), clientEndPoint.Port));

                ConnectResponse response = new ConnectResponse(ResponseType.Accepted, ServerName, Clients);
                connection.SendObject("ConnectInfo", response);

                Console.WriteLine($"({name}) se připojil k serveru (celkem  {Clients.Count} hráčů)");
            }

            //Aktualizace online klientů
            foreach (Client client in Clients)
            {
                NetworkComms.SendObject("UpdateListInfo", client.Ip, client.Port, Clients);
            }
        }
예제 #17
0
        public void SendBackupToServer()
        {
            try
            {
                Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
                ofd.DefaultExt  = ".txt";
                ofd.Filter      = "Text Files (*.txt)|*.txt";
                ofd.Multiselect = true;

                if (ofd.ShowDialog() == true)
                {
                    foreach (string filename in ofd.FileNames)
                    {
                        using (StreamReader saveFile = new StreamReader(filename))
                        {
                            XmlSerializer        serializer  = new XmlSerializer(typeof(DialRoutineScoreData));
                            DialRoutineScoreData backupScore = (DialRoutineScoreData)serializer.Deserialize(saveFile);

                            NetworkComms.SendObject("JudgeSendBackupScore", ClientCon.ServerIp, ClientCon.ServerPort, backupScore);
                        }
                    }
                }
            }
            catch
            {
                // Popup Error
            }
        }
예제 #18
0
        //Odpojení klienta na základě žádosti
        private static void DisconnectDelgatePointer(PacketHeader packetheader, Connection connection, string enemyName)
        {
            //IP Klienta
            IPEndPoint clientEndPoint = (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint;

            Client enemy  = Clients.Find(x => x.Name == enemyName);
            Client client = Clients.Find(x => x.Ip == clientEndPoint.Address.ToString() && x.Port == clientEndPoint.Port);

            //Odeslání protivníkovi, že se klient odpojil
            if (enemy != null)
            {
                NetworkComms.SendObject("Disconnect", enemy.Ip, enemy.Port, true);
            }

            Console.WriteLine($"({client.Name}) se odpojil!");

            Game game = Games.Find(x => x.HasClient(enemy) || x.HasClient(client));

            //Pokud existují, odstranění záznamů z listů
            if (game != null)
            {
                Games.Remove(game);
            }
            Clients.Remove(client);

            foreach (Client c in Clients)
            {
                NetworkComms.SendObject("UpdateListInfo", c.Ip, c.Port, Clients);
            }
        }
예제 #19
0
        private static void IncomingMessageSeller(PacketHeader packetHeader, Connection connection, Seller incomingObject)
        {
            Console.WriteLine("\nA message was received from " + connection.ToString() + " which said '" + incomingObject.SellerId + "'.");
            IPEndPoint     remoteIpEndPoint = connection.ConnectionInfo.RemoteEndPoint as IPEndPoint;
            string         addresse         = remoteIpEndPoint.Address.ToString();
            SellerDataBase sellerDataBase   = new SellerDataBase();

            if (incomingObject.SellerId == -1 || incomingObject.CreateNewSeller == true)
            {
                if (incomingObject.CreateNewSeller == false)
                {
                    incomingObject.SellerId = sellerDataBase.Count() + 1;
                    NetworkComms.SendObject("MessageNewSellerId", addresse, remoteIpEndPoint.Port, incomingObject.SellerId.ToString());
                }

                sellerDataBase.Upsert(incomingObject);
            }
            else
            {
                Seller findSeller = sellerDataBase.FindOne(x => x.SellerId == incomingObject.SellerId);

                if (findSeller == null)
                {
                    //no Seller with the id found send it back
                    NetworkComms.SendObject("MessageSellerIdNotFound", addresse, remoteIpEndPoint.Port, "Die Verkäufer Id konnte nicht gefunden werden!");
                    return;
                }

                findSeller.Match(incomingObject);
                sellerDataBase.Upsert(findSeller);
            }

            NetworkComms.SendObject("MessageSellerCount", addresse, remoteIpEndPoint.Port, "Anzahl Verkäufernummer: " + sellerDataBase.Count().ToString());
        }
예제 #20
0
        private void SendPortInformationsToServer(int partNumber, int sellerId, double price, string info)
        {
            PartInformations partInformations = new PartInformations(partNumber, info, price, sellerId);

            //Send it to Server... :-)
            NetworkComms.SendObject("MessagePartInformations", _Model.ServerIpAddresse, Convert.ToInt32(_Model.ServerPort), partInformations);
        }
예제 #21
0
파일: Network.cs 프로젝트: liangyee/Wizard
        public Boolean SendTrumpCard(RawCard card, Player specificPlayer = null)
        {
            if (runState == State.Server)
            {
                if (specificPlayer == null)
                {
                    try {
                        foreach (Player player in playerList.GetPlayers())
                        {
                            NetworkComms.SendObject("TrumpCard", player.IP, player.Port, card);
                        }

                        return(true);
                    } catch (Exception e) {
                        baseClass.NetworkError("[SendTrumpCard] SendTrumpCard: " + e.Message);
                    }
                }
                else
                {
                    try {
                        NetworkComms.SendObject("TrumpCard", specificPlayer.IP, specificPlayer.Port, card);
                        return(true);
                    } catch (Exception e) {
                        baseClass.NetworkError("[SendTrumpCard] SendTrumpCard: " + e.Message);
                    }
                }
            }

            return(false);
        }
예제 #22
0
        private void IncomingMessagePartInformations(PacketHeader packetHeader, Connection connection, PartInformations incomingObject)
        {
            switch (packetHeader.PacketType)
            {
            case "MessageSellerIsFound":
                Invoke(new Action(() =>
                {
                    DialogResult result = MessageBox.Show("Betrag: " + incomingObject.PartPrice.ToString(), "Bitte bestätigen", MessageBoxButtons.OKCancel);

                    if (result == DialogResult.OK)
                    {
                        ListViewItem item = new ListViewItem(incomingObject.PartDescription);
                        item.SubItems.Add(incomingObject.PartNumber.ToString());
                        item.SubItems.Add(incomingObject.PartPrice.ToString() + "€");

                        listView1.Items.Add(item);
                        labelPartPrice.Text = incomingObject.PartPrice.ToString() + "€";
                        _TotalPrice        += incomingObject.PartPrice;

                        labelTotalPrice.Text = _TotalPrice.ToString() + "€";
                        textBox1.Focus();
                        NetworkComms.SendObject("MessagePartInformationsConfirmed", _Model.ServerIpAddresse, Convert.ToInt32(_Model.ServerPort), incomingObject);
                    }
                }));

                break;
            }
        }
예제 #23
0
파일: Network.cs 프로젝트: liangyee/Wizard
        public Boolean SendEndGameMessage(Player winner, Player specificPlayer = null)
        {
            gameStarted = true;
            if (runState == State.Server)
            {
                if (specificPlayer == null)
                {
                    try {
                        foreach (Player player in playerList.GetPlayers())
                        {
                            NetworkComms.SendObject("EndGameMessage", player.IP, player.Port, winner);
                            Thread.Sleep(SLEEP_TIME);
                        }
                        return(true);
                    } catch (Exception e) {
                        baseClass.NetworkError("[SendEndGameMessage] SendEndGameMessage: " + e.Message);
                    }
                }
                else
                {
                    try {
                        NetworkComms.SendObject("EndGameMessage", specificPlayer.IP, specificPlayer.Port, winner);
                        Thread.Sleep(SLEEP_TIME);
                        return(true);
                    } catch (Exception e) {
                        baseClass.NetworkError("[SendEndGameMessage] SendEndGameMessage: " + e.Message);
                    }
                }
            }

            return(false);
        }
예제 #24
0
파일: Manager.cs 프로젝트: aneopsy/Powker
 private void StartHandContextMessage(PacketHeader header, Connection connection, StartHandContext message)
 {
     consoleInterface.ClearMsg();
     consolePlayer.StartHand(message);
     consoleInterface.SetMsg("Hand ready...");
     NetworkComms.SendObject("Reply", serverIP, serverPort, "OK");
 }
예제 #25
0
파일: Network.cs 프로젝트: liangyee/Wizard
        public Boolean SendPing()
        {
            Boolean allPlayersConnected = true;

            if (runState == State.Server)
            {
                try {
                    foreach (Player player in playerList.GetPlayers())
                    {
                        try {
                            NetworkComms.SendObject("Ping", player.IP, player.Port, player);
                        } catch (Exception e) {
                            baseClass.NetworkError("[SendPing] SendPing: " + e.Message);
                            allPlayersConnected = false;
                            baseClass.PlayerNotConnected(player);
                        }
                    }
                    if (allPlayersConnected)
                    {
                        baseClass.PlayersAllConnected();
                    }

                    return(true);
                } catch (Exception e) {
                    baseClass.NetworkError("[SendPing] SendPing: " + e.Message);
                }
            }

            return(false);
        }
예제 #26
0
파일: Manager.cs 프로젝트: aneopsy/Powker
 private void EndRoundContextMessage(PacketHeader header, Connection connection, EndRoundContext message)
 {
     consoleInterface.ClearMsg();
     consolePlayer.EndRound(message);
     consoleInterface.SetMsg("Round end");
     NetworkComms.SendObject("Reply", serverIP, serverPort, "OK");
 }
예제 #27
0
 public void BroadcastBlock(string blk)
 {
     if (peers != null)
     {
         int count = 0;
         foreach (Peer peer in peers.peers_list)
         {
             //MessageBox.Show("Peer: " + peer.ip_address + "\nConnected: " + peer.connected.ToString());
             // Don't send to yourself
             if (peer.ip_address != CurrentIPAddress())
             {
                 // Only send to connected peers
                 if (peer.connected)
                 {
                     try
                     {
                         // Try sending the block
                         NetworkComms.SendObject("SendBlock", peer.ip_address, serverPort, blk);
                         count++;
                     }
                     catch (Exception)
                     {
                         // If the transaction didn't go through, the peer is most likely offline
                         peer.connected = false;
                     }
                 }
             }
         }
         //MessageBox.Show("Block sent to " + count.ToString() + " peers.");
     }
 }
예제 #28
0
        //Útok na klienta 1
        public void FireOnClient1(GridPosition position)
        {
            //Trefa do lodi klienta
            if (Client1ShipPositions.Any(x => x.Equals(position)))
            {
                //Nalezení trefené pozice
                GridPosition pos = Client1ShipPositions.Find(x => x.Equals(position));
                //Update vlastnosti o trefení
                pos.IsHit = true;

                //Odeslání pozice oběma klientům + kdo je na řadě
                NetworkComms.SendObject("GamePositionUpdateInfo", Client1.Ip, Client1.Port, new GamePositionUpdateInfo(pos, UpdateType.PlayerGrid, false));
                NetworkComms.SendObject("GamePositionUpdateInfo", Client2.Ip, Client2.Port, new GamePositionUpdateInfo(pos, UpdateType.EnemyGrid, true));
            }
            else
            {
                //Nalezení netrefené pozice
                GridPosition pos = new GridPosition(position.X, position.Y);
                pos.IsMissed = true;

                NetworkComms.SendObject("GamePositionUpdateInfo", Client1.Ip, Client1.Port, new GamePositionUpdateInfo(pos, UpdateType.PlayerGrid, true));
                NetworkComms.SendObject("GamePositionUpdateInfo", Client2.Ip, Client2.Port, new GamePositionUpdateInfo(pos, UpdateType.EnemyGrid, false));
            }

            //Pokud všechny pozice jsou trefené
            if (Client1ShipPositions.All(x => x.IsHit))
            {
                Console.WriteLine($"(Hra #{Id}) {Client2.Name} vyhrál!");
                NetworkComms.SendObject("EndGameInfo", Client2.Ip, Client2.Port, true);  //True - Výhra
                NetworkComms.SendObject("EndGameInfo", Client1.Ip, Client1.Port, false); //False - Prohra

                _reset = true;
            }
        }
예제 #29
0
 private void sendCommandButton_Click(object sender, EventArgs e)
 {
     if (commandRichTextBox.Text.Length == 0)
     {
         System.Windows.Forms.MessageBox.Show("No command to send");
     }
     else
     {
         if (commandRichTextBox.Text.Contains(">"))
         {
             NetworkComms.SendObject("Command", clientIP, clientPort, commandRichTextBox.Text);
         }
         else
         {
             if (appendCheckBox.Checked)
             {
                 Debug.WriteLine("appended checked");
                 NetworkComms.SendObject("Command", clientIP, clientPort, APPEND + commandRichTextBox.Text);
             }
             else
             {
                 Debug.WriteLine("appended unchecked");
                 NetworkComms.SendObject("Command", clientIP, clientPort, TRUNC + commandRichTextBox.Text);
             }
             //System.Threading.Sleep(1000);
             const String OUTPUTFILE = "outputfile.txt";
             ReceiveTCP(port, "none", OUTPUTFILE, clientIP + clientPort.ToString() + OUTPUTFILE);
             //Process("notepad.exe", OUTPUTFILE);
             //Process.Start("notepad.exe", clientIP + clientPort.ToString() + OUTPUTFILE);
             outputRichTextBox.LoadFile(clientIP + clientPort.ToString() + OUTPUTFILE, RichTextBoxStreamType.PlainText);
         }
     }
 }
예제 #30
0
 private void ConnectButton_Click(object sender, RoutedEventArgs e)
 {
     if (isValidUser())
     {
         if (isValidIP())
         {
             try
             {
                 string username   = usernameTextBox.Text.Trim();
                 string serverInfo = serverIpTextBox.Text.Trim();
                 serverIP   = serverInfo.Split(':').First();
                 serverPort = int.Parse(serverInfo.Split(':').Last());
                 NetworkComms.SendObject("ConnectionRequest", serverIP, serverPort, username);
             }
             catch
             {
                 MessageBox.Show("Unable to connect to specified server.");
             }
         }
         else
         {
             MessageBox.Show("Must enter IP address in format 192.168.1.100:5000");
             serverIpTextBox.Clear();
         }
     }
     else
     {
         MessageBox.Show("Must enter a valid username");
     }
 }