This commit is contained in:
2025-04-06 20:56:02 +03:00
parent da7f5a8404
commit 21b60b7f4c
9 changed files with 498 additions and 147 deletions

View File

@ -17,8 +17,9 @@ namespace DroneSimulator
public class ReceiveData
{
public int ID;
public byte[]? Buffer;
public byte[] Buffer;
public int Size;
public Socket? Client;
@ -28,7 +29,8 @@ namespace DroneSimulator
{
public int ID;
public Socket? workSocket = null;
public byte[] buffer;
public const int count = 1024;
public byte[] buffer = new byte[count];
}
private int SocketID = 0;
@ -36,7 +38,7 @@ namespace DroneSimulator
private Socket? ServerSocket;
private List<ClientData> ClientSockets = new List<ClientData>();
public delegate int ServerCallback(object o);
public delegate void ServerCallback(object o);
private ServerCallback? ConnectionCallback;
private ServerCallback? ReceiveCallback;
@ -99,11 +101,9 @@ namespace DroneSimulator
ClientSockets.Add(clientData);
int size = ConnectionCallback(new ConnectData { ID = clientData.ID, Connect = true, Count = ClientSockets.Count, Client = handler });
ConnectionCallback(new ConnectData { ID = clientData.ID, Connect = true, Count = ClientSockets.Count, Client = handler });
clientData.buffer=new byte[size];
handler.BeginReceive(clientData.buffer, 0, size, 0, new AsyncCallback(ReadCallback), clientData);
handler.BeginReceive(clientData.buffer, 0, ClientData.count, 0, new AsyncCallback(ReadCallback), clientData);
}
else handler.Close();
@ -130,13 +130,11 @@ namespace DroneSimulator
return;
}
int size = ReceiveCallback(new ReceiveData { ID = cd.ID, Buffer = cd.buffer, Size = bytes, Client = cd.workSocket });
cd.buffer = new byte[size];
ReceiveCallback(new ReceiveData { ID = cd.ID, Buffer = cd.buffer, Size = bytes, Client = cd.workSocket });
try
{
cd.workSocket?.BeginReceive(cd.buffer, 0, size, 0, new AsyncCallback(ReadCallback), cd);
cd.workSocket?.BeginReceive(cd.buffer, 0, ClientData.count, 0, new AsyncCallback(ReadCallback), cd);
}
catch { }
}