From ccc6937ac934529ca08852753581f7db74c3ad42 Mon Sep 17 00:00:00 2001 From: AnloGames <7383an@gmail.com> Date: Thu, 17 Aug 2023 12:50:20 +0300 Subject: [PATCH 1/3] NetworkFix --- DangerousD/GameCore/Managers/AppManager.cs | 2 +- DangerousD/GameCore/Managers/SoundManager.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs index f927618..02790a7 100644 --- a/DangerousD/GameCore/Managers/AppManager.cs +++ b/DangerousD/GameCore/Managers/AppManager.cs @@ -22,7 +22,7 @@ namespace DangerousD.GameCore private GraphicsDeviceManager _graphics; private SpriteBatch _spriteBatch; public GameState gameState { get; private set; } - public MultiPlayerStatus multiPlayerStatus { get; private set; } + public MultiPlayerStatus multiPlayerStatus { get; private set; } = MultiPlayerStatus.SinglePlayer; IDrawableObject MenuGUI; IDrawableObject OptionsGUI; IDrawableObject LoginGUI; diff --git a/DangerousD/GameCore/Managers/SoundManager.cs b/DangerousD/GameCore/Managers/SoundManager.cs index 382541e..ffa61d2 100644 --- a/DangerousD/GameCore/Managers/SoundManager.cs +++ b/DangerousD/GameCore/Managers/SoundManager.cs @@ -33,7 +33,7 @@ namespace DangerousD.GameCore sound.SoundEffect.IsLooped = false; sound.SoundEffect.Play(); PlayingSounds.Add(sound); - if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Host) + if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host) { AppManager.Instance.NetworkManager.SendMsg(new Network.NetworkTask(Vector2.Zero, soundName)); } @@ -45,7 +45,7 @@ namespace DangerousD.GameCore sound.SoundEffect.Volume = (float)sound.GetDistance(playerPos) / MaxSoundDistance; sound.SoundEffect.Play(); PlayingSounds.Add(sound); - if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Host) + if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host) { AppManager.Instance.NetworkManager.SendMsg(new Network.NetworkTask(soundPos, soundName)); } From 62a32ccdce29130346c3a82c83fbac04ba514af4 Mon Sep 17 00:00:00 2001 From: AnloGames <7383an@gmail.com> Date: Thu, 17 Aug 2023 13:05:43 +0300 Subject: [PATCH 2/3] TryCatchNetworkFix --- DangerousD/GameCore/Network/NetworkManager.cs | 132 +++++++++++------- 1 file changed, 83 insertions(+), 49 deletions(-) diff --git a/DangerousD/GameCore/Network/NetworkManager.cs b/DangerousD/GameCore/Network/NetworkManager.cs index b56f9f1..2cc93ae 100644 --- a/DangerousD/GameCore/Network/NetworkManager.cs +++ b/DangerousD/GameCore/Network/NetworkManager.cs @@ -21,20 +21,27 @@ namespace DangerousD.GameCore.Network private void Init(string IpAddress) { - socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - IPAddress address = IPAddress.Parse(IpAddress); - int port = 8000; - endPoint = new IPEndPoint(address, port); + try + { + socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + IPAddress address = IPAddress.Parse(IpAddress); + int port = 8000; + endPoint = new IPEndPoint(address, port); + } + catch { } } private void AcceptSockets() { while (true) { - Socket clientSocket = socket.Accept(); - clientSockets.Add(clientSocket); - Thread receiveThread = new Thread(BeginHostReceive); - receiveThread.Start(clientSocket); - Console.WriteLine("Connected"); + try + { + Socket clientSocket = socket.Accept(); + clientSockets.Add(clientSocket); + Thread receiveThread = new Thread(BeginHostReceive); + receiveThread.Start(clientSocket); + } + catch { } } } @@ -43,31 +50,42 @@ namespace DangerousD.GameCore.Network Socket clientSocket = clSocket as Socket; while (clientSocket != null) { - byte[] bytesCount = new byte[4]; - clientSocket.Receive(bytesCount); - byte[] Data = new byte[BitConverter.ToInt32(bytesCount)]; - StateObject so = new StateObject(clientSocket, Data); - IAsyncResult count = clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so); + try + { + byte[] bytesCount = new byte[4]; + clientSocket.Receive(bytesCount); + byte[] Data = new byte[BitConverter.ToInt32(bytesCount)]; + StateObject so = new StateObject(clientSocket, Data); + IAsyncResult count = clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so); + } + catch { } } } public void HostInit(string IpAddress) { - Init(IpAddress); - socket.Bind(endPoint); - socket.Listen(4); - Thread acceptThread = new Thread(AcceptSockets); - acceptThread.Start(); - state = "Host"; - Console.WriteLine("Start Accept"); + try + { + Init(IpAddress); + socket.Bind(endPoint); + socket.Listen(4); + Thread acceptThread = new Thread(AcceptSockets); + acceptThread.Start(); + state = "Host"; + } + catch { } } public void ClientInit(string IpAddress) { - Init(IpAddress); - socket.Connect(endPoint); - state = "Client"; - Thread.Sleep(10); - Thread ReceivingThread = new Thread(ReceiveMsgFromHost); - ReceivingThread.Start(); + try + { + Init(IpAddress); + socket.Connect(endPoint); + state = "Client"; + Thread.Sleep(10); + Thread ReceivingThread = new Thread(ReceiveMsgFromHost); + ReceivingThread.Start(); + } + catch { } } public void SendMsg(NetworkTask networkTask) { @@ -75,45 +93,61 @@ namespace DangerousD.GameCore.Network int count = Data.Length; if (state == "Host") { - foreach (Socket socket in clientSockets) + try + { + foreach (Socket socket in clientSockets) + { + socket.Send(BitConverter.GetBytes(count)); + socket.Send(Data); + } + } + catch { } + } + else + { + try { socket.Send(BitConverter.GetBytes(count)); socket.Send(Data); } - } - else - { - socket.Send(BitConverter.GetBytes(count)); - socket.Send(Data); + catch { } } } private void ReceiveMsgFromHost() { while (true) { - byte[] bytesCount = new byte[4]; - socket.Receive(bytesCount); - byte[] Data = new byte[BitConverter.ToInt32(bytesCount)]; - StateObject so = new StateObject(socket, Data); - IAsyncResult count = socket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so); + try + { + byte[] bytesCount = new byte[4]; + socket.Receive(bytesCount); + byte[] Data = new byte[BitConverter.ToInt32(bytesCount)]; + StateObject so = new StateObject(socket, Data); + IAsyncResult count = socket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so); + } + catch { } } } private void AsyncReceiveCallback(IAsyncResult ar) { - StateObject so = ar.AsyncState as StateObject; - Socket clientSocket = so.workSocket; - int readCount = clientSocket.EndReceive(ar); - so.UploadedBytesCount += readCount; - so.sb.Append(Encoding.Unicode.GetString(so.buffer, 0, readCount)); - if (so.UploadedBytesCount < so.bufferSize) + try { - clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, new AsyncCallback(AsyncReceiveCallback), so); - } - else - { - GetReceivingMessages(JsonConvert.DeserializeObject(so.sb.ToString())); + StateObject so = ar.AsyncState as StateObject; + Socket clientSocket = so.workSocket; + int readCount = clientSocket.EndReceive(ar); + so.UploadedBytesCount += readCount; + so.sb.Append(Encoding.Unicode.GetString(so.buffer, 0, readCount)); + if (so.UploadedBytesCount < so.bufferSize) + { + clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, new AsyncCallback(AsyncReceiveCallback), so); + } + else + { + GetReceivingMessages(JsonConvert.DeserializeObject(so.sb.ToString())); + } } + catch { } } } } From 6b40bbe8819f6cb9be8242657d9f32ad0b6c78c7 Mon Sep 17 00:00:00 2001 From: SergoDobro Date: Thu, 17 Aug 2023 13:14:14 +0300 Subject: [PATCH 3/3] fixes --- DangerousD/GameCore/Managers/AppManager.cs | 2 ++ DangerousD/GameCore/Network/NetworkManager.cs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs index 02790a7..1261b82 100644 --- a/DangerousD/GameCore/Managers/AppManager.cs +++ b/DangerousD/GameCore/Managers/AppManager.cs @@ -176,6 +176,8 @@ namespace DangerousD.GameCore public void NetworkSync(NetworkTask networkTask) { + //TODO + return; switch (networkTask.operation) { case NetworkTaskOperationEnum.TakeDamage: diff --git a/DangerousD/GameCore/Network/NetworkManager.cs b/DangerousD/GameCore/Network/NetworkManager.cs index 2cc93ae..bac781f 100644 --- a/DangerousD/GameCore/Network/NetworkManager.cs +++ b/DangerousD/GameCore/Network/NetworkManager.cs @@ -88,7 +88,9 @@ namespace DangerousD.GameCore.Network catch { } } public void SendMsg(NetworkTask networkTask) - { + { + //TODO + return; byte[] Data = Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(networkTask)); int count = Data.Length; if (state == "Host")