diff --git a/Echo/Client/Client.cs b/Echo/Client/Client.cs
new file mode 100644
index 0000000..d2e52de
--- /dev/null
+++ b/Echo/Client/Client.cs
@@ -0,0 +1,38 @@
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+
+namespace Client;
+
+internal class Client
+{
+ static void Main(string[] args)
+ {
+ using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
+ {
+ IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 20000);
+ socket.Connect(endPoint);
+
+ while (true)
+ {
+ string str = Console.ReadLine();
+ if (str == "exit")
+ return;
+
+ byte[] buffer = Encoding.UTF8.GetBytes(str);
+ socket.Send(buffer);
+
+ byte[] buffer2 = new byte[256];
+ int byteRead = socket.Receive(buffer2);
+ if (byteRead < 1)
+ {
+ Console.WriteLine("Disconnecting server...");
+ return;
+ }
+
+ string str2 = Encoding.UTF8.GetString(buffer2);
+ Console.WriteLine($"[Receive] {str2}");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Echo/Client/Client.csproj b/Echo/Client/Client.csproj
new file mode 100644
index 0000000..74abf5c
--- /dev/null
+++ b/Echo/Client/Client.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
diff --git a/Echo/Echo.sln b/Echo/Echo.sln
new file mode 100644
index 0000000..3cb2965
--- /dev/null
+++ b/Echo/Echo.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32929.385
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{E8C28E9B-3C0F-4A89-9F95-FB078E7B1D81}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Client\Client.csproj", "{224CAEA2-AA8A-4DA7-AE3C-F9BE71938D63}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {E8C28E9B-3C0F-4A89-9F95-FB078E7B1D81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E8C28E9B-3C0F-4A89-9F95-FB078E7B1D81}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8C28E9B-3C0F-4A89-9F95-FB078E7B1D81}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E8C28E9B-3C0F-4A89-9F95-FB078E7B1D81}.Release|Any CPU.Build.0 = Release|Any CPU
+ {224CAEA2-AA8A-4DA7-AE3C-F9BE71938D63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {224CAEA2-AA8A-4DA7-AE3C-F9BE71938D63}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {224CAEA2-AA8A-4DA7-AE3C-F9BE71938D63}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {224CAEA2-AA8A-4DA7-AE3C-F9BE71938D63}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {1B391772-9687-4A60-8A3B-A725F424A383}
+ EndGlobalSection
+EndGlobal
diff --git a/Echo/Echo/Echo.csproj b/Echo/Echo/Echo.csproj
new file mode 100644
index 0000000..74abf5c
--- /dev/null
+++ b/Echo/Echo/Echo.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
diff --git a/Echo/Echo/Program.cs b/Echo/Echo/Program.cs
new file mode 100644
index 0000000..ed4b97f
--- /dev/null
+++ b/Echo/Echo/Program.cs
@@ -0,0 +1,10 @@
+namespace Echo
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Hello, World!");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Echo/Server/Server.cs b/Echo/Server/Server.cs
new file mode 100644
index 0000000..1308f1f
--- /dev/null
+++ b/Echo/Server/Server.cs
@@ -0,0 +1,39 @@
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+
+namespace Server;
+
+internal class Server
+{
+ static void Main(string[] args)
+ {
+ using (Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
+ {
+ IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 20000);
+ serverSocket.Bind(endPoint);
+ serverSocket.Listen(20);
+
+ using (Socket clientSocket = serverSocket.Accept())
+ {
+ Console.WriteLine(clientSocket.RemoteEndPoint);
+
+ while (true)
+ {
+ byte[] buffer = new byte[256];
+ int totalBytes = clientSocket.Receive(buffer);
+ if (totalBytes < 1)
+ {
+ Console.WriteLine("Disconnecting client...");
+ return;
+ }
+
+ string str = Encoding.UTF8.GetString(buffer);
+ Console.WriteLine(str);
+
+ clientSocket.Send(buffer);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Echo/Server/Server.csproj b/Echo/Server/Server.csproj
new file mode 100644
index 0000000..74abf5c
--- /dev/null
+++ b/Echo/Server/Server.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+