diff --git a/SocketFlag/Client/Client.cs b/SocketFlag/Client/Client.cs new file mode 100644 index 0000000..871a75f --- /dev/null +++ b/SocketFlag/Client/Client.cs @@ -0,0 +1,22 @@ +using System.Net; +using System.Net.Sockets; +using System.Text; + +namespace Client; + +internal class Client +{ + static void Main(string[] args) + { + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + socket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 20000)); + + byte[] buffer = new byte[1024]; + //socket.Receive(buffer, SocketFlags.Peek); + + socket.Send(Encoding.UTF8.GetBytes("normal"), SocketFlags.None); + socket.Send(Encoding.UTF8.GetBytes("OOB"), SocketFlags.OutOfBand); // tcp 헤더에 urgent mode 활성화 (긴급 메시지) + + Console.ReadLine(); + } +} \ No newline at end of file diff --git a/SocketFlag/Client/Client.csproj b/SocketFlag/Client/Client.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/SocketFlag/Client/Client.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/SocketFlag/Server/Server.cs b/SocketFlag/Server/Server.cs new file mode 100644 index 0000000..d191961 --- /dev/null +++ b/SocketFlag/Server/Server.cs @@ -0,0 +1,31 @@ +using System.Net; +using System.Net.Sockets; +using System.Text; + +namespace Server; + +internal class Server +{ + static void Main(string[] args) + { + Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + serverSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 20000)); + serverSocket.Listen(10); + + Socket clientSocket = serverSocket.Accept(); + Console.WriteLine(clientSocket.RemoteEndPoint); + + byte[] buffer1 = new byte[6]; + int n1 = clientSocket.Receive(buffer1, SocketFlags.None); + Console.WriteLine(Encoding.UTF8.GetString(buffer1)); + + byte[] buffer2 = new byte[256]; + int n2 = clientSocket.Receive(buffer2, 2, 100, SocketFlags.OutOfBand); // OOB 활성화 시 1바이트만 읽어옴 + Console.WriteLine("OOB data length: " + n2); + + int n3 = clientSocket.Receive(buffer2, 0, 2, SocketFlags.None); + Console.WriteLine(Encoding.UTF8.GetString(buffer2)); + + Console.ReadLine(); + } +} \ No newline at end of file diff --git a/SocketFlag/Server/Server.csproj b/SocketFlag/Server/Server.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/SocketFlag/Server/Server.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/SocketFlag/SocketFlag.sln b/SocketFlag/SocketFlag.sln new file mode 100644 index 0000000..15020eb --- /dev/null +++ b/SocketFlag/SocketFlag.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", "{B5272C9D-DDAC-4F28-A1F1-62DB4CBD62EA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Client\Client.csproj", "{5048D06F-BA72-45AC-8906-5C08EB1845B5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B5272C9D-DDAC-4F28-A1F1-62DB4CBD62EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5272C9D-DDAC-4F28-A1F1-62DB4CBD62EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5272C9D-DDAC-4F28-A1F1-62DB4CBD62EA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5272C9D-DDAC-4F28-A1F1-62DB4CBD62EA}.Release|Any CPU.Build.0 = Release|Any CPU + {5048D06F-BA72-45AC-8906-5C08EB1845B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5048D06F-BA72-45AC-8906-5C08EB1845B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5048D06F-BA72-45AC-8906-5C08EB1845B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5048D06F-BA72-45AC-8906-5C08EB1845B5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E982E7BF-5D30-44A5-8AEA-7DF7DFD70762} + EndGlobalSection +EndGlobal diff --git a/SocketFlag/SocketFlag/Program.cs b/SocketFlag/SocketFlag/Program.cs new file mode 100644 index 0000000..28ca6bc --- /dev/null +++ b/SocketFlag/SocketFlag/Program.cs @@ -0,0 +1,10 @@ +namespace SocketFlag +{ + internal class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello, World!"); + } + } +} \ No newline at end of file diff --git a/SocketFlag/SocketFlag/SocketFlag.csproj b/SocketFlag/SocketFlag/SocketFlag.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/SocketFlag/SocketFlag/SocketFlag.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + +