ClientNetworkManager

This commit is contained in:
MARKPRO44 2024-08-15 21:56:40 +03:00
parent fc969da956
commit f4d2bae54d
2 changed files with 31 additions and 9 deletions

View file

@ -22,7 +22,7 @@ namespace ZoFo.GameCore
public void OnDataSend(string data) public void OnDataSend(string data)
{ {
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data); List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data);
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> switch // тут будет switch
} }
public void GameEndedUnexpectedly(){ } public void GameEndedUnexpectedly(){ }

View file

@ -1,31 +1,37 @@
using System; using System;
using System.Collections.Generic;
using System.Data.SqlTypes; using System.Data.SqlTypes;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
namespace ZoFo.GameCore.GameManagers.NetworkManager namespace ZoFo.GameCore.GameManagers.NetworkManager
{ {
public class ClientNetworkManager public class ClientNetworkManager
{ {
private IPAddress iPAddress = IPAddress.Any;
private int port = 7632; private int port = 7632;
private EndPoint endPoint; private EndPoint endPoint;
private Socket socket; private Socket socket;
List<IUpdateData> updates = new List<IUpdateData>();
public delegate void OnDataSent(string Data); public delegate void OnDataSent(string Data);
public event OnDataSent GetDataSent; // event public event OnDataSent GetDataSent; // event
public void Init() //create endPoint, socket public void Init() //create endPoint, socket
{ {
endPoint = new IPEndPoint(iPAddress, port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
} }
public void SendData() public void SendData()
{ {
while(socket.Connected)
{
byte[] bytes = Encoding.UTF8.GetBytes(updates.ToString());
socket.Send(bytes);
}
} }
public void StopConnection() public void StopConnection()
@ -34,23 +40,39 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
socket.Close(); socket.Close();
} }
public void JoinRoom() // multyplayer /// <summary>
/// приложение пытается подключиться к комнате
/// </summary>
/// <param name="ip"></param>
/// <param name="port"></param>
public void JoinRoom(string ip) // multyplayer
{ {
endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
socket.Connect(endPoint);
SendData(); SendData();
StartListening(); Thread listen = new Thread(StartListening);
listen.Start();
} }
/// <summary>
/// создается
/// </summary>
public void JoinYourself() // single player public void JoinYourself() // single player
{ {
endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), port);
socket.Connect(endPoint);
SendData(); SendData();
StartListening(); Thread listen = new Thread(StartListening);
listen.Start();
} }
//поток 2 //поток 2
public void StartListening() public void StartListening()
{ {
socket.Connect(endPoint);
while(socket.Connected) while(socket.Connected)
{ {
byte[] bytes = new byte[2048]; byte[] bytes = new byte[2048];