forked from CPL/Simulator
update
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
using System.Net.Sockets;
|
||||
using System.Net;
|
||||
using System.Drawing;
|
||||
|
||||
namespace DroneSimulator
|
||||
{
|
||||
@ -27,8 +28,7 @@ namespace DroneSimulator
|
||||
{
|
||||
public int ID;
|
||||
public Socket? workSocket = null;
|
||||
public const int BufferSize = 1024;
|
||||
public byte[] buffer = new byte[BufferSize];
|
||||
public byte[] buffer;
|
||||
}
|
||||
|
||||
private int SocketID = 0;
|
||||
@ -36,7 +36,7 @@ namespace DroneSimulator
|
||||
private Socket? ServerSocket;
|
||||
private List<ClientData> ClientSockets = new List<ClientData>();
|
||||
|
||||
public delegate void ServerCallback(object o);
|
||||
public delegate int ServerCallback(object o);
|
||||
|
||||
private ServerCallback? ConnectionCallback;
|
||||
private ServerCallback? ReceiveCallback;
|
||||
@ -99,9 +99,11 @@ namespace DroneSimulator
|
||||
|
||||
ClientSockets.Add(clientData);
|
||||
|
||||
ConnectionCallback(new ConnectData { ID = clientData.ID, Connect = true, Count = ClientSockets.Count, Client = handler });
|
||||
int size = ConnectionCallback(new ConnectData { ID = clientData.ID, Connect = true, Count = ClientSockets.Count, Client = handler });
|
||||
|
||||
handler.BeginReceive(clientData.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), clientData);
|
||||
clientData.buffer=new byte[size];
|
||||
|
||||
handler.BeginReceive(clientData.buffer, 0, size, 0, new AsyncCallback(ReadCallback), clientData);
|
||||
}
|
||||
else handler.Close();
|
||||
|
||||
@ -128,11 +130,13 @@ namespace DroneSimulator
|
||||
return;
|
||||
}
|
||||
|
||||
ReceiveCallback(new ReceiveData { ID = cd.ID, Buffer = cd.buffer, Size = bytes, Client = cd.workSocket });
|
||||
int size = ReceiveCallback(new ReceiveData { ID = cd.ID, Buffer = cd.buffer, Size = bytes, Client = cd.workSocket });
|
||||
|
||||
cd.buffer = new byte[size];
|
||||
|
||||
try
|
||||
{
|
||||
cd.workSocket?.BeginReceive(cd.buffer, 0, ClientData.BufferSize, 0, new AsyncCallback(ReadCallback), cd);
|
||||
cd.workSocket?.BeginReceive(cd.buffer, 0, size, 0, new AsyncCallback(ReadCallback), cd);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
Reference in New Issue
Block a user