mirror of
https://github.com/DaKerboul/perun.git
synced 2026-08-09 17:55:38 +02:00
General cleanup
This commit is contained in:
@@ -7,67 +7,63 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
internal class TCPController
|
||||
public class TCPController
|
||||
{
|
||||
// Main class for TCP listener
|
||||
public static int intListenPort; // Port to connect to
|
||||
public static bool boolDone; // Helper to exit main loop without killing thread
|
||||
public static TcpListener tcpServer; // Listener object
|
||||
public static string[] arrLogHistory; // Log history for GUI
|
||||
public static string[] arrSendBuffer; // Mysql send buffer
|
||||
public static Thread thrTCPListener; // Seperate thread for UDP
|
||||
public int intListenPort; // Port to connect to
|
||||
public bool bDone; // Helper to exit main loop without killing thread
|
||||
public string[] arrLogHistory; // Log history for GUI
|
||||
public string[] arrSendBuffer; // Mysql send buffer
|
||||
public Thread thrTCPListener; // Seperate thread for TCP
|
||||
public bool bStatus; // TCP connecion status
|
||||
|
||||
public static void Create(int intListenPort, ref string[] arrLogHistory, ref string[] arrSendBuffer)
|
||||
public void Create(int par_intListenPort, ref string[] par_arrLogHistory, ref string[] par_arrSendBuffer)
|
||||
{
|
||||
// Create class
|
||||
TCPController.intListenPort = intListenPort;
|
||||
TCPController.arrLogHistory = arrLogHistory;
|
||||
TCPController.arrSendBuffer = arrSendBuffer;
|
||||
intListenPort = par_intListenPort;
|
||||
arrLogHistory = par_arrLogHistory;
|
||||
arrSendBuffer = par_arrSendBuffer;
|
||||
bDone = false;
|
||||
bStatus = false;
|
||||
}
|
||||
|
||||
public static void StopListen()
|
||||
public void StopListen()
|
||||
{
|
||||
// FInish listening
|
||||
TCPController.boolDone = true;
|
||||
TCPController.tcpServer.Stop();
|
||||
TCPController.tcpServer = null;
|
||||
// Finish listening
|
||||
bDone = true;
|
||||
bStatus = false;
|
||||
|
||||
for (int i = 0; i < arrSendBuffer.Length - 1; i++)
|
||||
{
|
||||
arrSendBuffer[i] = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void StartListen()
|
||||
public void StartListen()
|
||||
{
|
||||
Console.WriteLine("TCP Listen start");
|
||||
while (!TCPController.boolDone)
|
||||
while (!bDone)
|
||||
{
|
||||
Console.WriteLine("TCP Listen start");
|
||||
TcpListener tcpServer = new TcpListener(IPAddress.Any, intListenPort); ; // Listener object
|
||||
|
||||
try
|
||||
{
|
||||
// Start listening to TCP
|
||||
tcpServer = new TcpListener(IPAddress.Any, intListenPort);
|
||||
string strReceivedData;
|
||||
|
||||
// Start the main loop
|
||||
TCPController.boolDone = false;
|
||||
tcpServer.Start();
|
||||
while (!TCPController.boolDone)
|
||||
bStatus = true;
|
||||
while (!bDone)
|
||||
{
|
||||
// Start listening
|
||||
|
||||
Console.WriteLine("TCP: Waiting for packet");
|
||||
TcpClient tcpClient = tcpServer.AcceptTcpClient(); //if a connection exists, the server will accept it
|
||||
NetworkStream ns = tcpClient.GetStream(); //networkstream is used to send/receive messages
|
||||
//tcpClient.ReceiveBufferSize = 65534;
|
||||
|
||||
while (tcpClient.Connected && !TCPController.boolDone) //while the client is connected, we look for incoming messages
|
||||
while (tcpClient.Connected && !bDone) //while the client is connected, we look for incoming messages
|
||||
{
|
||||
//arrReceiveByteArray = new byte[tcpClient.ReceiveBufferSize]; //the messages arrive as byte array
|
||||
//ns.Read(arrReceiveByteArray, 0, arrReceiveByteArray.Length); //the same networkstream reads the message sent by the client
|
||||
//strReceivedData = Encoding.ASCII.GetString(arrReceiveByteArray, 0, arrReceiveByteArray.Length);
|
||||
|
||||
StringBuilder CompleteMessage = new StringBuilder();
|
||||
|
||||
if (ns.CanRead)
|
||||
@@ -87,24 +83,33 @@ internal class TCPController
|
||||
strReceivedData = CompleteMessage.ToString();
|
||||
Console.WriteLine("Sender: {0} Payload: {1}", null, strReceivedData);
|
||||
|
||||
dynamic dynamicRawTCPFrame = JsonConvert.DeserializeObject(strReceivedData); // Deserialize received frame
|
||||
string strRawTCPFrameType = dynamicRawTCPFrame.type;
|
||||
|
||||
PerunHelper.LogHistoryAdd(ref arrLogHistory, "TCP packet received, type: " + strRawTCPFrameType);
|
||||
|
||||
// Add to mySQL send buffer (find first empty slot)
|
||||
for (int i = 0; i < arrSendBuffer.Length - 1; i++)
|
||||
try
|
||||
{
|
||||
if (arrSendBuffer[i] == null)
|
||||
dynamic dynamicRawTCPFrame = JsonConvert.DeserializeObject(strReceivedData); // Deserialize received frame
|
||||
string strRawTCPFrameType = dynamicRawTCPFrame.type;
|
||||
|
||||
PerunHelper.LogHistoryAdd(ref arrLogHistory, "TCP packet received, type: " + strRawTCPFrameType);
|
||||
|
||||
// Add to mySQL send buffer (find first empty slot)
|
||||
for (int i = 0; i < arrSendBuffer.Length - 1; i++)
|
||||
{
|
||||
arrSendBuffer[i] = strReceivedData;
|
||||
break;
|
||||
if (arrSendBuffer[i] == null)
|
||||
{
|
||||
arrSendBuffer[i] = strReceivedData;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
Console.WriteLine(e.ToString());
|
||||
PerunHelper.LogHistoryAdd(ref arrLogHistory, "TCP ERROR incorrect JSON");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
tcpServer.Stop();
|
||||
bStatus = false;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -114,8 +119,14 @@ internal class TCPController
|
||||
Console.WriteLine(e.ToString());
|
||||
PerunHelper.LogHistoryAdd(ref arrLogHistory, "TCP error - connection closed or port in use");
|
||||
}
|
||||
|
||||
}
|
||||
//Console.WriteLine("TCP listen stop");
|
||||
if (!(tcpServer is null))
|
||||
{
|
||||
tcpServer.Stop();
|
||||
}
|
||||
bStatus = false;
|
||||
Console.WriteLine("TCP listen stop");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user