Reconnecting issue solved

This commit is contained in:
szporowolik
2019-09-13 15:56:56 +02:00
parent 9d42ccc1d4
commit fcb189a4cd
2 changed files with 34 additions and 3 deletions

View File

@@ -41,6 +41,9 @@ public class TCPController
public void StartListen() public void StartListen()
{ {
NetworkStream ns=null;
TcpClient tcpClient=null;
while (!bDone) while (!bDone)
{ {
Console.WriteLine("TCP Listen start"); Console.WriteLine("TCP Listen start");
@@ -59,8 +62,8 @@ public class TCPController
// Start listening // Start listening
Console.WriteLine("TCP: Waiting for packet"); Console.WriteLine("TCP: Waiting for packet");
TcpClient tcpClient = tcpServer.AcceptTcpClient(); //if a connection exists, the server will accept it tcpClient = tcpServer.AcceptTcpClient(); //if a connection exists, the server will accept it
NetworkStream ns = tcpClient.GetStream(); //networkstream is used to send/receive messages ns = tcpClient.GetStream(); //networkstream is used to send/receive messages
while (tcpClient.Connected && !bDone) //while the client is connected, we look for incoming messages while (tcpClient.Connected && !bDone) //while the client is connected, we look for incoming messages
{ {
@@ -78,7 +81,7 @@ public class TCPController
numberOfBytesRead = ns.Read(ReadBuffer, 0, ReadBuffer.Length); numberOfBytesRead = ns.Read(ReadBuffer, 0, ReadBuffer.Length);
CompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(ReadBuffer, 0, numberOfBytesRead)); CompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(ReadBuffer, 0, numberOfBytesRead));
} }
while (ns.DataAvailable); while (ns.DataAvailable && !bDone);
} }
strReceivedData = CompleteMessage.ToString(); strReceivedData = CompleteMessage.ToString();
Console.WriteLine("Sender: {0} Payload: {1}", null, strReceivedData); Console.WriteLine("Sender: {0} Payload: {1}", null, strReceivedData);
@@ -121,6 +124,16 @@ public class TCPController
} }
} }
if (!(ns is null))
{
ns.Flush();
ns.Close();
}
if (!(tcpClient is null))
{
tcpClient.Close();
}
if (!(tcpServer is null)) if (!(tcpServer is null))
{ {
tcpServer.Stop(); tcpServer.Stop();

View File

@@ -112,6 +112,7 @@ namespace Perun_v1
private void con_Button_Listen_ON_Click(object sender, EventArgs e) private void con_Button_Listen_ON_Click(object sender, EventArgs e)
{ {
// Start listening // Start listening
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "Opening connections");
tcpcServer.Create(Int32.Parse(con_txt_dcs_server_port.Text), ref Globals.arrLogHistory, ref arrSendBuffer); tcpcServer.Create(Int32.Parse(con_txt_dcs_server_port.Text), ref Globals.arrLogHistory, ref arrSendBuffer);
tcpcServer.thrTCPListener = new Thread(tcpcServer.StartListen); tcpcServer.thrTCPListener = new Thread(tcpcServer.StartListen);
tcpcServer.thrTCPListener.Start(); tcpcServer.thrTCPListener.Start();
@@ -135,6 +136,15 @@ namespace Perun_v1
private void con_Button_Listen_OFF_Click(object sender, EventArgs e) private void con_Button_Listen_OFF_Click(object sender, EventArgs e)
{ {
// Stop listening // Stop listening
// Display information
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "Closing connections");
con_Button_Listen_OFF.Enabled = false;
timer1_Tick(null, null);
this.Refresh();
Application.DoEvents();
try try
{ {
tcpcServer.StopListen(); tcpcServer.StopListen();
@@ -144,6 +154,10 @@ namespace Perun_v1
Console.WriteLine(ex.ToString()); Console.WriteLine(ex.ToString());
} }
while (tcpcServer.thrTCPListener.IsAlive)
{
Thread.Sleep(100); //ms
}
form_Main_EnableControls(); // Enable controls form_Main_EnableControls(); // Enable controls
con_img_db.Image = null; con_img_db.Image = null;
@@ -155,6 +169,10 @@ namespace Perun_v1
tim_1000ms.Enabled = false; tim_1000ms.Enabled = false;
tim_10000ms.Enabled = false; tim_10000ms.Enabled = false;
tim_200ms.Enabled = false; tim_200ms.Enabled = false;
// Display information about closed connections
PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "Connections closed");
timer1_Tick(null, null);
} }
private void con_lab_github_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void con_lab_github_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)