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)
{
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data);
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> switch
// тут будет switch
}
public void GameEndedUnexpectedly(){ }

View file

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