diff --git a/ZoFo/GameCore/Client.cs b/ZoFo/GameCore/Client.cs index cdfe368..8a936b4 100644 --- a/ZoFo/GameCore/Client.cs +++ b/ZoFo/GameCore/Client.cs @@ -77,8 +77,6 @@ namespace ZoFo.GameCore public void JoinRoom(string ip, int port) { - EndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip), port); - networkManager.EndPointServer = endPoint; networkManager.JoinRoom(ip, port); } public void JoinYourself(int port) { networkManager.JoinYourself(port); } diff --git a/ZoFo/GameCore/GUI/SelectModeMenu.cs b/ZoFo/GameCore/GUI/SelectModeMenu.cs index 32bfa38..e97d2df 100644 --- a/ZoFo/GameCore/GUI/SelectModeMenu.cs +++ b/ZoFo/GameCore/GUI/SelectModeMenu.cs @@ -41,10 +41,10 @@ public class SelectModeMenu : AbstractGUI // single Server server = new Server(); Client client = new Client(); - server.CreateRoom(false); - client.JoinYourself(server.MyIp.Port); AppManager.Instance.SetServer(server); AppManager.Instance.SetClient(client); + server.CreateRoom(false); + client.JoinYourself(server.MyIp.Port); AppManager.Instance.ChangeState(GameState.HostPlaying); AppManager.Instance.SetGUI(new HUD()); diff --git a/ZoFo/GameCore/GUI/SelectingServerGUI.cs b/ZoFo/GameCore/GUI/SelectingServerGUI.cs index 3f915ee..8de30cb 100644 --- a/ZoFo/GameCore/GUI/SelectingServerGUI.cs +++ b/ZoFo/GameCore/GUI/SelectingServerGUI.cs @@ -104,10 +104,10 @@ public class SelectingServerGUI : AbstractGUI // host Server server = new Server(); //Server Logic MultiPlayer Client client = new Client(); - server.CreateRoom(true); - client.JoinYourself(server.MyIp.Port); AppManager.Instance.SetServer(server); AppManager.Instance.SetClient(client); + server.CreateRoom(true); + client.JoinYourself(server.MyIp.Port); string key = server.MyIp.ToString(); AppManager.Instance.debugHud.Set(key, "MultiPlayer"); // ваш код здесь diff --git a/ZoFo/GameCore/GameManagers/AppManager.cs b/ZoFo/GameCore/GameManagers/AppManager.cs index b129359..cbc21cb 100644 --- a/ZoFo/GameCore/GameManagers/AppManager.cs +++ b/ZoFo/GameCore/GameManagers/AppManager.cs @@ -101,7 +101,7 @@ namespace ZoFo.GameCore.GameManagers protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || - Keyboard.GetState().IsKeyDown(Keys.Escape)) { server.CloseConnection(); Exit(); } + Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } // debugHud.Set("key", "value"); diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs index 5c7beef..a50a6ad 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs @@ -18,6 +18,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager { private int port = 0; private IPEndPoint endPoint; + private IPEndPoint sendingEP; private Socket socket; List updates = new List(); private List waitingDatagramm = new List(); @@ -26,21 +27,15 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public event OnDataSent GetDataSent; // event public bool IsConnected { get { return socket.Connected; } } public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint; - public EndPoint EndPointServer { get; set; } public ClientNetworkManager() { Init(); } - public bool SocketConnected() - { - return socket.Connected; - } - public void Init() //create endPoint, socket { socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); - endPoint = new IPEndPoint(GetIp(), 0); + endPoint = new IPEndPoint(GetIp(), 8081); socket.Bind(endPoint); Thread thread = new Thread(StartListening); thread.Start(); @@ -48,8 +43,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public void SendData() { - byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(updates)); //нужно сериализовать - socket.Send(bytes); + Datagramm Datagramm = new Datagramm(); + Datagramm.updateDatas = updates; + byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(Datagramm)); //нужно сериализовать + socket.SendTo(bytes, sendingEP); } public void AddData(UpdateData UpdateData) @@ -92,7 +89,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager Datagramm Dgramm = new Datagramm() { DatagrammId = DatagrammId }; string data = JsonSerializer.Serialize(Dgramm); byte[] buffer = Encoding.UTF8.GetBytes(data); - socket.SendTo(buffer, EndPointServer); + socket.SendTo(buffer, sendingEP); } void CheckDatagramm() @@ -124,19 +121,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager /// public void JoinRoom(string ip, int port) // multyplayer { - - endPoint = new IPEndPoint(IPAddress.Parse(ip), port); - socket.Connect(endPoint); - SendData(); - Thread listen = new Thread(StartListening); - listen.IsBackground = true; - listen.Start(); - } - public void JoinRoom(IPEndPoint endPoint) // multyplayer - { - - this.endPoint = endPoint; - socket.Connect(endPoint); + sendingEP = new IPEndPoint(IPAddress.Parse(ip), port); SendData(); Thread listen = new Thread(StartListening); listen.IsBackground = true; @@ -148,8 +133,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager /// public void JoinYourself(int port) // single player { - endPoint = new IPEndPoint(GetIp(), port); - socket.Connect(endPoint); + sendingEP = AppManager.Instance.server.MyIp; SendData(); Thread listen = new Thread(StartListening); listen.IsBackground = true; @@ -159,7 +143,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public static IPAddress GetIp() { string hostName = Dns.GetHostName(); // Retrive the Name of HOST - var ipList = Dns.GetHostByName(hostName).AddressList; + var ipList = Dns.GetHostEntry(hostName).AddressList; foreach (var ip in ipList) { diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs index 311f2b2..9a4d67b 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs @@ -23,7 +23,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager private bool isMultiplayer; //Player Id to Player endPoint private List clientsEP; - private IPEndPoint endPoint; + public IPEndPoint endPoint; private List commonUpdates; private List importantUpdates; private List sendedData; diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs index c813dd8..ec3699e 100644 --- a/ZoFo/GameCore/Server.cs +++ b/ZoFo/GameCore/Server.cs @@ -29,7 +29,7 @@ namespace ZoFo.GameCore { private ServerNetworkManager networkManager; private int ticks = 0; - //public IPEndPoint MyIp { get { return networkManager.InfoConnect; } } + public IPEndPoint MyIp { get { return networkManager.endPoint; } } public Server() { networkManager = new ServerNetworkManager();