From 5fd86bcb662c2619f91a0c9233d62c8d73e1ec6d Mon Sep 17 00:00:00 2001 From: Daniel Duller <46626392+dadul96@users.noreply.github.com> Date: Mon, 14 Oct 2019 10:05:13 +0200 Subject: [PATCH 1/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1deee43..bce7ef9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# TCP_Server_Client_Tester +# TCP_Server_Client_Tester (outdated README) This windows program can be used for testing TCP servers and clients. It also works as an example project for my [TcpConnection_Lib](https://github.com/dadul96/TcpConnection_Lib). ![](screenshot.gif) From e1f4b3e8f405c337b263fe865125075d7ff5d419 Mon Sep 17 00:00:00 2001 From: Daniel Duller Date: Tue, 15 Oct 2019 19:57:37 +0200 Subject: [PATCH 2/8] changed the code to fit the new TcpConnection_Lib-API fixed bug, where clicking send without a string would still flag stringFilled fixed bug: client disconnect would not print disconnect --- TCP_Server_Client_Tester/MainWindow.xaml.cs | 328 ++++++++++++-------- 1 file changed, 205 insertions(+), 123 deletions(-) diff --git a/TCP_Server_Client_Tester/MainWindow.xaml.cs b/TCP_Server_Client_Tester/MainWindow.xaml.cs index 9bec1b5..339fcc4 100644 --- a/TCP_Server_Client_Tester/MainWindow.xaml.cs +++ b/TCP_Server_Client_Tester/MainWindow.xaml.cs @@ -26,15 +26,19 @@ namespace TCP_Server_Client_Tester /// public partial class MainWindow : Window { - static readonly TcpConnection connection = new TcpConnection(); + static readonly TcpConnection serverConnection = new TcpConnection(); + static readonly TcpConnection clientConnection = new TcpConnection(); enum Tcp { LISTEN, + INITIAL_CONNECT, CONNECT, IDLE, SENDING, RECEIVING, + DISCONNECT, + RECONNECT, CLOSE } @@ -85,32 +89,44 @@ void TcpServerLoop() switch (serverState) { case Tcp.LISTEN: - if (connection.Listen(port)) + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - serverState = Tcp.CONNECT; - } - else - { - serverState = Tcp.CLOSE; - } - break; - - case Tcp.CONNECT: - if (connection.TcpIsConnected == true) + serverStartButton.IsEnabled = false; + serverSendButton1.IsEnabled = false; + serverSendButton2.IsEnabled = false; + serverTextboxBig.AppendText("Waiting for a client..." + Environment.NewLine); + serverTextboxBig.ScrollToEnd(); + })); + + if (serverConnection.TryListen(port, out string RemoteEndpointAddress)) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - serverTextboxBig.AppendText("Connected to " + connection.RemoteEndpointAddress + Environment.NewLine); + serverStartButton.IsEnabled = true; + serverSendButton1.IsEnabled = true; + serverSendButton2.IsEnabled = true; + serverTextboxBig.AppendText("Connected to " + RemoteEndpointAddress + Environment.NewLine); serverTextboxBig.ScrollToEnd(); })); - tcpConnectedFlag = true; - serverState = Tcp.IDLE; + if (serverConnection.TryReadingData()) + { + tcpConnectedFlag = true; + serverState = Tcp.IDLE; + } + else + { + serverState = Tcp.DISCONNECT; + } + } + else + { + serverState = Tcp.DISCONNECT; } break; case Tcp.IDLE: - if (connection.TcpIsConnected == true) + if (serverConnection.TcpIsConnected == true) { if (sendingStringFilledFlag) { @@ -123,81 +139,79 @@ void TcpServerLoop() } else { - serverState = Tcp.CLOSE; + serverState = Tcp.DISCONNECT; } break; case Tcp.SENDING: - if (connection.TcpIsConnected == true) + if (serverConnection.TrySend(sendingString)) { - if (connection.Send(sendingString)) + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => - { - serverTextboxBig.AppendText("Sending: " + sendingString + Environment.NewLine); - serverTextboxBig.ScrollToEnd(); - })); + serverTextboxBig.AppendText("Sending: " + sendingString + Environment.NewLine); + serverTextboxBig.ScrollToEnd(); + })); - sendingString = ""; - sendingStringFilledFlag = false; - serverState = Tcp.IDLE; - } - else - { - serverState = Tcp.CLOSE; - } + sendingString = ""; + sendingStringFilledFlag = false; + serverState = Tcp.IDLE; } else { - serverState = Tcp.CLOSE; + serverState = Tcp.DISCONNECT; } break; case Tcp.RECEIVING: - if (connection.TcpIsConnected == true) + receivingString = serverConnection.GetReceivedString(); + + if (receivingString != null) { - try + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - receivingString = connection.GetReceivedString(); + serverTextboxBig.AppendText("Receiving: " + receivingString + Environment.NewLine); + serverTextboxBig.ScrollToEnd(); + })); - if (receivingString != "") - { - Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => - { - serverTextboxBig.AppendText("Receiving: " + receivingString + Environment.NewLine); - serverTextboxBig.ScrollToEnd(); - })); - - receivingString = ""; - } - } - catch { } - serverState = Tcp.IDLE; + receivingString = null; } - else + serverState = Tcp.IDLE; + break; + + case Tcp.DISCONNECT: + sendingString = ""; + receivingString = ""; + sendingStringFilledFlag = false; + tcpConnectedFlag = false; + + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - serverState = Tcp.CLOSE; - } + serverStartButton.IsEnabled = false; + serverSendButton1.IsEnabled = false; + serverSendButton2.IsEnabled = false; + serverTextboxBig.AppendText("Problem occurred! Reconnecting..." + Environment.NewLine); + serverTextboxBig.ScrollToEnd(); + })); + + serverConnection.Disconnect(); + + serverState = Tcp.LISTEN; break; case Tcp.CLOSE: - try - { - sendingString = ""; - receivingString = ""; - sendingStringFilledFlag = false; - tcpConnectedFlag = false; + sendingString = ""; + receivingString = ""; + sendingStringFilledFlag = false; + tcpConnectedFlag = false; - Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => - { - serverTextboxBig.AppendText("Disconnected..." + Environment.NewLine); - serverTextboxBig.ScrollToEnd(); - })); + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => + { + serverTextboxBig.AppendText("Disconnected..." + Environment.NewLine); + serverTextboxBig.ScrollToEnd(); + })); - connection.Dispose(); - } - catch { } + serverConnection.Dispose(); closeFlag = true; break; @@ -207,9 +221,9 @@ void TcpServerLoop() } } } - catch + catch (Exception Ex) { - MessageBox.Show("Server loop error. Please restart the Program!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + MessageBox.Show("PLEASE RESTART! TcpServerLoop-thread error: \n\n" + Ex, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } @@ -226,7 +240,7 @@ void TcpClientLoop() clientTextboxBig.Text = ""; })); - clientState = Tcp.CONNECT; + clientState = Tcp.INITIAL_CONNECT; while (!closeFlag) { @@ -237,108 +251,164 @@ void TcpClientLoop() switch (clientState) { - case Tcp.CONNECT: - if (connection.Connect(ip, port)) + case Tcp.INITIAL_CONNECT: + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => + { + clientStartButton.IsEnabled = false; + clientSendButton1.IsEnabled = false; + clientSendButton2.IsEnabled = false; + clientTextboxBig.AppendText("Trying to connect..." + Environment.NewLine); + clientTextboxBig.ScrollToEnd(); + })); + + if (clientConnection.TryConnect(ip, port)) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { + clientStartButton.IsEnabled = true; + clientSendButton1.IsEnabled = true; + clientSendButton2.IsEnabled = true; clientTextboxBig.AppendText("Connected" + Environment.NewLine); clientTextboxBig.ScrollToEnd(); })); - tcpConnectedFlag = true; - clientState = Tcp.IDLE; - } - break; - - case Tcp.IDLE: - if (connection.TcpIsConnected == true) - { - if (sendingStringFilledFlag) + if (clientConnection.TryReadingData()) { - clientState = Tcp.SENDING; + tcpConnectedFlag = true; + clientState = Tcp.IDLE; } else { - clientState = Tcp.RECEIVING; + clientState = Tcp.RECONNECT; } } else { - clientState = Tcp.CLOSE; + clientState = Tcp.RECONNECT; } break; - case Tcp.SENDING: - if (connection.TcpIsConnected == true) + case Tcp.CONNECT: + if (clientConnection.TryConnect(ip, port)) { - if (connection.Send(sendingString)) + if (clientConnection.TryReadingData()) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - clientTextboxBig.AppendText("Sending: " + sendingString + Environment.NewLine); + clientStartButton.IsEnabled = true; + clientSendButton1.IsEnabled = true; + clientSendButton2.IsEnabled = true; + clientTextboxBig.AppendText("Connected" + Environment.NewLine); clientTextboxBig.ScrollToEnd(); })); - sendingString = ""; - sendingStringFilledFlag = false; + tcpConnectedFlag = true; clientState = Tcp.IDLE; } else { - clientState = Tcp.CLOSE; + clientState = Tcp.DISCONNECT; } } else { - clientState = Tcp.CLOSE; + clientState = Tcp.DISCONNECT; } break; - case Tcp.RECEIVING: - if (connection.TcpIsConnected == true) + case Tcp.IDLE: + if (clientConnection.TcpIsConnected == true) { - try + if (sendingStringFilledFlag) { - receivingString = connection.GetReceivedString(); - - if (receivingString != "") - { - Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => - { - clientTextboxBig.AppendText("Receiving: " + receivingString + Environment.NewLine); - clientTextboxBig.ScrollToEnd(); - })); - - receivingString = ""; - } + clientState = Tcp.SENDING; + } + else + { + clientState = Tcp.RECEIVING; } - catch { } - clientState = Tcp.IDLE; } else { - clientState = Tcp.CLOSE; + clientState = Tcp.RECONNECT; } + break; - case Tcp.CLOSE: - try + case Tcp.SENDING: + if (clientConnection.TrySend(sendingString)) { + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => + { + clientTextboxBig.AppendText("Sending: " + sendingString + Environment.NewLine); + clientTextboxBig.ScrollToEnd(); + })); + sendingString = ""; - receivingString = ""; sendingStringFilledFlag = false; - tcpConnectedFlag = false; + clientState = Tcp.IDLE; + } + else + { + clientState = Tcp.RECONNECT; + } + break; + + case Tcp.RECEIVING: + receivingString = clientConnection.GetReceivedString(); + if (receivingString != null) + { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => { - serverTextboxBig.AppendText("Disconnected..." + Environment.NewLine); - serverTextboxBig.ScrollToEnd(); + clientTextboxBig.AppendText("Receiving: " + receivingString + Environment.NewLine); + clientTextboxBig.ScrollToEnd(); })); - connection.Dispose(); + receivingString = null; } - catch { } + clientState = Tcp.IDLE; + break; + + case Tcp.RECONNECT: + sendingString = ""; + receivingString = ""; + sendingStringFilledFlag = false; + tcpConnectedFlag = false; + + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => + { + clientStartButton.IsEnabled = false; + clientSendButton1.IsEnabled = false; + clientSendButton2.IsEnabled = false; + clientTextboxBig.AppendText("Problem occurred! Reconnecting..." + Environment.NewLine); + clientTextboxBig.ScrollToEnd(); + })); + + clientConnection.Disconnect(); + + clientState = Tcp.CONNECT; + break; + + case Tcp.DISCONNECT: + clientConnection.Disconnect(); + + clientState = Tcp.CONNECT; + break; + + case Tcp.CLOSE: + sendingString = ""; + receivingString = ""; + sendingStringFilledFlag = false; + tcpConnectedFlag = false; + + Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => + { + clientTextboxBig.AppendText("Disconnected..." + Environment.NewLine); + clientTextboxBig.ScrollToEnd(); + })); + + clientConnection.Disconnect(); closeFlag = true; break; @@ -348,9 +418,9 @@ void TcpClientLoop() } } } - catch + catch (Exception Ex) { - MessageBox.Show("Client loop error. Please restart the Program!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + MessageBox.Show("PLEASE RESTART! TcpClientLoop-thread error: \n\n" + Ex, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } @@ -443,7 +513,10 @@ private void serverSendButton1_Click(object sender, RoutedEventArgs e) if (!sendingStringFilledFlag && tcpConnectedFlag) { sendingString = serverSendTextbox1.Text; - sendingStringFilledFlag = true; + if (sendingString != null && sendingString != "") + { + sendingStringFilledFlag = true; + } } } @@ -452,7 +525,10 @@ private void serverSendButton2_Click(object sender, RoutedEventArgs e) if (!sendingStringFilledFlag && tcpConnectedFlag) { sendingString = serverSendTextbox2.Text; - sendingStringFilledFlag = true; + if (sendingString != null && sendingString != "") + { + sendingStringFilledFlag = true; + } } } @@ -461,7 +537,10 @@ private void clientSendButton1_Click(object sender, RoutedEventArgs e) if (!sendingStringFilledFlag && tcpConnectedFlag) { sendingString = clientSendTextbox1.Text; - sendingStringFilledFlag = true; + if (sendingString != null && sendingString != "") + { + sendingStringFilledFlag = true; + } } } @@ -470,7 +549,10 @@ private void clientSendButton2_Click(object sender, RoutedEventArgs e) if (!sendingStringFilledFlag && tcpConnectedFlag) { sendingString = clientSendTextbox2.Text; - sendingStringFilledFlag = true; + if (sendingString != null && sendingString != "") + { + sendingStringFilledFlag = true; + } } } } From bfa3b9ae4647e832e02a501c10b4acdc36e81e78 Mon Sep 17 00:00:00 2001 From: Daniel Duller Date: Thu, 17 Oct 2019 19:34:10 +0200 Subject: [PATCH 3/8] added Thread.Sleep(1) in order to decrease the CPU usage --- TCP_Server_Client_Tester/MainWindow.xaml.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TCP_Server_Client_Tester/MainWindow.xaml.cs b/TCP_Server_Client_Tester/MainWindow.xaml.cs index 339fcc4..08046fb 100644 --- a/TCP_Server_Client_Tester/MainWindow.xaml.cs +++ b/TCP_Server_Client_Tester/MainWindow.xaml.cs @@ -219,6 +219,7 @@ void TcpServerLoop() serverState = Tcp.CLOSE; break; } + Thread.Sleep(1); //for decreasing the CPU usage } } catch (Exception Ex) @@ -416,6 +417,7 @@ void TcpClientLoop() clientState = Tcp.CLOSE; break; } + Thread.Sleep(1); //for decreasing the CPU usage } } catch (Exception Ex) From 3d7f79fec01de5f44d738986545ee696bca6e128 Mon Sep 17 00:00:00 2001 From: Daniel Duller Date: Fri, 18 Oct 2019 16:12:31 +0200 Subject: [PATCH 4/8] added comments containing the program version number as well as the version number of the TcpConnection_Lib --- TCP_Server_Client_Tester/MainWindow.xaml.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/TCP_Server_Client_Tester/MainWindow.xaml.cs b/TCP_Server_Client_Tester/MainWindow.xaml.cs index 08046fb..fc71899 100644 --- a/TCP_Server_Client_Tester/MainWindow.xaml.cs +++ b/TCP_Server_Client_Tester/MainWindow.xaml.cs @@ -1,4 +1,7 @@ -using System; +//################# +//version: 2.0.0 +//################# +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -17,7 +20,7 @@ using System.Threading; using System.Net; using System.Net.Sockets; -using TcpConnection_Lib; +using TcpConnection_Lib; //lib-version 2.0.0 used namespace TCP_Server_Client_Tester { From e52ada9cf969f903badd69720db6bf75124e38a5 Mon Sep 17 00:00:00 2001 From: Daniel Duller Date: Fri, 18 Oct 2019 16:23:36 +0200 Subject: [PATCH 5/8] updated the animated screenshot (gif) --- screenshot.gif | Bin 53866 -> 57134 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshot.gif b/screenshot.gif index 22e7ac677ff1aee9be6b87a002446cd08315f19f..fdefb921c65df628827eb74359d760d01756ef3b 100644 GIT binary patch literal 57134 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 z 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 XCzJM{Oxk}kY5&Qj{r@YIR^q<^&|7I# literal 53866 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
4rWnE~gP)v*fcMoJM3Kk4gEU0t2 zlsFqfS4x7L?m%`*z{roDI>B>P#G;O@A4cisu(O7Ev}v!87+CluR6xiJEyt1 zH2vJ=`cl?8PcDO9+x|mY8$|U|PNz+f+P$67s-nzS69eP-18}OvcmH5|_yERZQj1eY z!AD}NCP~u1fSxvc-^4Fq&1b@26OxN``+A);A8iOVE7BD&2dF6vq|WWFuSdTtc_P+h z?)M%04*xbFEUu}y*}2(iFEe>1LPGUU@``z|ENbmaaNEG(3E)Al{Jwvegx|BexDKZ8 z_Di8v`=tqS)qcqhQdqWMvi;0+B5bP;7!7n6(zkq=J$9`JxPJ3!|oQev4m4x$)2Kw9`TcMcg3X`iqXu8N%@gxIw(54cs8!FR-54@Q3{B z)jFPi4dhU0arFb&!4}G4oO(^=A8)$K$kgJRAjgT``sO7*joNSLID;MJ<0Z8rwlfp` z_E?RFDC_x|Db*(>50`Am7WwQXLjjV=t!REQZEKjI_N;ig2$UusA#U?h3M1(@n~B@G z{kU`Fb`&rN3yM{8CV+MEE>VKTtei0QS|z6#$h^tLoAYn*ln~tsr3*yEN^U(I5jM-c z0hLj9B*6k3;pA=ufxK&{tdt#Y+vrBRCNy1Q=lMCJl+P!*%tPIhtJ4W!AJ1Yl`&6GM ze)qKEXJ+}H0lhbN;sX7X+%qW)0>l2nBImNRaGp3sPV3etM0m8}_OrPpt06=l->E3N zONvimdcIhI;D}RB?7S_VI)n8rcWy$yUfW@XgsOi%FFF;7nN}7p0`i)cxo?7)xDyx%gpBiG9!8-V>IBt zXVuvnA>T8c7QHhyGrjpfwW;r$HBK)sR=uqS*h*f0Y_conBTi^r{^k0+Vw*p?h@Nz{dM~1n<1^o{hukniJ3Cfoea)y z9Rt+tdS-M5diA;6bj)WHn8ur5JFJe?ly{n*b}0Yd=%R3Wm*JI~vKKnx4rMPPWZ|+` z>XaI0w^Eq{vj<-e0Dc-Z0(@ZH#5SNEJU^@F@#4N#~?Oi1ex3MjG_b#8a)bX}v{C2%vkZUwr0hps2*G zVbs#Q=T@Swi(iKGcX!UK-O8+CPrT(jY|iONF8PkXnCw`T7|C2h0v@FaTt@3E%fdLe z@_d{zG_aho(X#G{wB<*4G4EzRvr|VUt`UQJqIdIZAyULhzc_*Q-#@Z8E#1P@bXE_R ztB0E=i8QcrK6UR?uHwNm3G7H0Kwsig1Zxk-jg7Z4>WhyD?g4AF2{26Gtz1(D6@GS< zVO?KrIbL49ixmw4^hf{30zs&(7_d=4z7q)24q)9xMac=vYd3ChDvjM%B`$x`R-2pAIbTj!O zxi_z50=r=d9+o?RBjAXB`f^HXVJuOopd69 z&M#+@I`73KQop*^X;8miXm8D1INRr&w|JT(nzv*L$RhC~6#(LF^iiWM;+6_|{ytXN z0Zdkm!YoLT$-*etWfAu4fJ88?@LhoH%-F&5nm9&;qnI<^3SZa8U|@v;TeHwb+ig!z3Le&)BPQ!Y=!WMtv(95oOGl zk=So4wE+?bR)$kW2&N<@e`t(%uBnW)EUa6JMB*jv`C7)_=?o#ue1LNwr<}lW_ELHG zD36xG?9w^<^rvvuey!%SHSLJ|7UpU_W#;w+5RcM$xJHN8)AI}dM;?2__cfPUIPSV) zz&3_!)oVS=_|~5yP%(HIa{5`OciDyKxg7_$Zf()INlqQO+Hq*d-STVO_ojRKE4o&G zkhozbn1Ns_!iPQfTDE>9E6$f&>n%LEh1vc&3us9*+Sb&D)7>I(B{Zy61bR+@9#4Js zo15EOOz)r9wm*C0f0W5Q+{+*EYNcUb=Y_8GLf3hr>%7o)Ug$b6be$Kv&I?`Vg|72L N|6jb&pSG`he*-J#;#B|u From 946e9b88e4be798b732b497c2272326fde8ce1b1 Mon Sep 17 00:00:00 2001 From: Daniel Duller <46626392+dadul96@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:25:02 +0200 Subject: [PATCH 6/8] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index bce7ef9..7a6a388 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,11 @@ There is no installation required. Just download the **TCP_Server_Client_Tester. * [WPF](https://docs.microsoft.com/en-us/dotnet/framework/wpf/) - Framework used for creating the GUI * [TcpConnection_Lib](https://github.com/dadul96/TcpConnection_Lib) - C# library that contains the TCP connection handling +| **TcpConnection_Lib-versions** | | **TCP_Server_Client_Tester-versions** | +|--------------------------------------------------------------------------- |----- |---------------------------------------------------------------------------------- | +| [v1.0.0](https://github.com/dadul96/TcpConnection_Lib/releases/tag/v1.0.0) | <- | [v1.0.0](https://github.com/dadul96/TCP_Server_Client_Tester/releases/tag/v1.0.0) | +| [v2.0.0](https://github.com/dadul96/TcpConnection_Lib/releases/tag/v2.0.0) | <- | [v2.0.0](https://github.com/dadul96/TCP_Server_Client_Tester/releases/tag/v2.0.0) | + ### Author **Daniel Duller** - [dadul96](https://github.com/dadul96) From 95b0f4e2c9845ac5600180cebf6d2e48afc21f51 Mon Sep 17 00:00:00 2001 From: Daniel Duller <46626392+dadul96@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:27:22 +0200 Subject: [PATCH 7/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a6a388..c0bf9f3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# TCP_Server_Client_Tester (outdated README) +# TCP_Server_Client_Tester This windows program can be used for testing TCP servers and clients. It also works as an example project for my [TcpConnection_Lib](https://github.com/dadul96/TcpConnection_Lib). ![](screenshot.gif) From 08c7afab984f9f6ef48c8d7e37a6bcd10527d483 Mon Sep 17 00:00:00 2001 From: Daniel Duller <46626392+dadul96@users.noreply.github.com> Date: Sun, 22 Dec 2019 09:23:44 +0100 Subject: [PATCH 8/8] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e136998 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Daniel Duller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.