FirstWorkingRdpCommit

This commit is contained in:
AnloGames 2024-08-19 12:33:43 +03:00
parent dae5cab5c6
commit 2c3405d007
7 changed files with 17 additions and 35 deletions

View file

@ -77,8 +77,6 @@ namespace ZoFo.GameCore
public void JoinRoom(string ip, int port) public void JoinRoom(string ip, int port)
{ {
EndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
networkManager.EndPointServer = endPoint;
networkManager.JoinRoom(ip, port); networkManager.JoinRoom(ip, port);
} }
public void JoinYourself(int port) { networkManager.JoinYourself(port); } public void JoinYourself(int port) { networkManager.JoinYourself(port); }

View file

@ -41,10 +41,10 @@ public class SelectModeMenu : AbstractGUI
// single // single
Server server = new Server(); Server server = new Server();
Client client = new Client(); Client client = new Client();
server.CreateRoom(false);
client.JoinYourself(server.MyIp.Port);
AppManager.Instance.SetServer(server); AppManager.Instance.SetServer(server);
AppManager.Instance.SetClient(client); AppManager.Instance.SetClient(client);
server.CreateRoom(false);
client.JoinYourself(server.MyIp.Port);
AppManager.Instance.ChangeState(GameState.HostPlaying); AppManager.Instance.ChangeState(GameState.HostPlaying);
AppManager.Instance.SetGUI(new HUD()); AppManager.Instance.SetGUI(new HUD());

View file

@ -104,10 +104,10 @@ public class SelectingServerGUI : AbstractGUI
// host // host
Server server = new Server(); //Server Logic MultiPlayer Server server = new Server(); //Server Logic MultiPlayer
Client client = new Client(); Client client = new Client();
server.CreateRoom(true);
client.JoinYourself(server.MyIp.Port);
AppManager.Instance.SetServer(server); AppManager.Instance.SetServer(server);
AppManager.Instance.SetClient(client); AppManager.Instance.SetClient(client);
server.CreateRoom(true);
client.JoinYourself(server.MyIp.Port);
string key = server.MyIp.ToString(); string key = server.MyIp.ToString();
AppManager.Instance.debugHud.Set(key, "MultiPlayer"); AppManager.Instance.debugHud.Set(key, "MultiPlayer");
// ваш код здесь // ваш код здесь

View file

@ -101,7 +101,7 @@ namespace ZoFo.GameCore.GameManagers
protected override void Update(GameTime gameTime) protected override void Update(GameTime gameTime)
{ {
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || 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"); // debugHud.Set("key", "value");

View file

@ -18,6 +18,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
{ {
private int port = 0; private int port = 0;
private IPEndPoint endPoint; private IPEndPoint endPoint;
private IPEndPoint sendingEP;
private Socket socket; private Socket socket;
List<UpdateData> updates = new List<UpdateData>(); List<UpdateData> updates = new List<UpdateData>();
private List<Datagramm> waitingDatagramm = new List<Datagramm>(); private List<Datagramm> waitingDatagramm = new List<Datagramm>();
@ -26,21 +27,15 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public event OnDataSent GetDataSent; // event public event OnDataSent GetDataSent; // event
public bool IsConnected { get { return socket.Connected; } } public bool IsConnected { get { return socket.Connected; } }
public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint; public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint;
public EndPoint EndPointServer { get; set; }
public ClientNetworkManager() public ClientNetworkManager()
{ {
Init(); Init();
} }
public bool SocketConnected()
{
return socket.Connected;
}
public void Init() //create endPoint, socket public void Init() //create endPoint, socket
{ {
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
endPoint = new IPEndPoint(GetIp(), 0); endPoint = new IPEndPoint(GetIp(), 8081);
socket.Bind(endPoint); socket.Bind(endPoint);
Thread thread = new Thread(StartListening); Thread thread = new Thread(StartListening);
thread.Start(); thread.Start();
@ -48,8 +43,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public void SendData() public void SendData()
{ {
byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(updates)); //нужно сериализовать Datagramm Datagramm = new Datagramm();
socket.Send(bytes); Datagramm.updateDatas = updates;
byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(Datagramm)); //нужно сериализовать
socket.SendTo(bytes, sendingEP);
} }
public void AddData(UpdateData UpdateData) public void AddData(UpdateData UpdateData)
@ -92,7 +89,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
Datagramm Dgramm = new Datagramm() { DatagrammId = DatagrammId }; Datagramm Dgramm = new Datagramm() { DatagrammId = DatagrammId };
string data = JsonSerializer.Serialize(Dgramm); string data = JsonSerializer.Serialize(Dgramm);
byte[] buffer = Encoding.UTF8.GetBytes(data); byte[] buffer = Encoding.UTF8.GetBytes(data);
socket.SendTo(buffer, EndPointServer); socket.SendTo(buffer, sendingEP);
} }
void CheckDatagramm() void CheckDatagramm()
@ -124,19 +121,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
/// <param name="port"></param> /// <param name="port"></param>
public void JoinRoom(string ip, int port) // multyplayer public void JoinRoom(string ip, int port) // multyplayer
{ {
sendingEP = new IPEndPoint(IPAddress.Parse(ip), port);
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);
SendData(); SendData();
Thread listen = new Thread(StartListening); Thread listen = new Thread(StartListening);
listen.IsBackground = true; listen.IsBackground = true;
@ -148,8 +133,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
/// </summary> /// </summary>
public void JoinYourself(int port) // single player public void JoinYourself(int port) // single player
{ {
endPoint = new IPEndPoint(GetIp(), port); sendingEP = AppManager.Instance.server.MyIp;
socket.Connect(endPoint);
SendData(); SendData();
Thread listen = new Thread(StartListening); Thread listen = new Thread(StartListening);
listen.IsBackground = true; listen.IsBackground = true;
@ -159,7 +143,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public static IPAddress GetIp() public static IPAddress GetIp()
{ {
string hostName = Dns.GetHostName(); // Retrive the Name of HOST 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) foreach (var ip in ipList)
{ {

View file

@ -23,7 +23,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
private bool isMultiplayer; private bool isMultiplayer;
//Player Id to Player endPoint //Player Id to Player endPoint
private List<IPEndPoint> clientsEP; private List<IPEndPoint> clientsEP;
private IPEndPoint endPoint; public IPEndPoint endPoint;
private List<UpdateData> commonUpdates; private List<UpdateData> commonUpdates;
private List<UpdateData> importantUpdates; private List<UpdateData> importantUpdates;
private List<Datagramm> sendedData; private List<Datagramm> sendedData;

View file

@ -29,7 +29,7 @@ namespace ZoFo.GameCore
{ {
private ServerNetworkManager networkManager; private ServerNetworkManager networkManager;
private int ticks = 0; private int ticks = 0;
//public IPEndPoint MyIp { get { return networkManager.InfoConnect; } } public IPEndPoint MyIp { get { return networkManager.endPoint; } }
public Server() public Server()
{ {
networkManager = new ServerNetworkManager(); networkManager = new ServerNetworkManager();