no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | development:csharp:multithreaded_tcp_listener [2021/05/19 12:23] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Multithreaded TCP listener in C# ====== | ||
+ | <code c#> | ||
+ | static TcpListener server; | ||
+ | Int32 port = 8889; | ||
+ | IPAddress localAddr = IPAddress.Parse(" | ||
+ | server = new TcpListener(localAddr, | ||
+ | ThreadPool.QueueUserWorkItem(ConnectionServer, | ||
+ | |||
+ | private static void ConnectionServer(object obj) | ||
+ | { | ||
+ | var server = (TcpListener)obj; | ||
+ | try | ||
+ | { | ||
+ | server.Start(); | ||
+ | while (true) | ||
+ | { | ||
+ | TcpClient tcpclient = server.AcceptTcpClient(); | ||
+ | ThreadPool.QueueUserWorkItem(ConnectionProcessor, | ||
+ | } | ||
+ | } | ||
+ | catch (SocketException e) | ||
+ | { | ||
+ | Console.WriteLine(" | ||
+ | } | ||
+ | finally | ||
+ | { | ||
+ | server.Stop(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | private static void ConnectionProcessor(object obj) | ||
+ | { | ||
+ | var server= (TcpClient)obj; | ||
+ | Byte[] bytes1 = new Byte[132]; | ||
+ | NetworkStream stream = server.GetStream(); | ||
+ | while (stream.Read(bytes1, | ||
+ | { | ||
+ | // do something with bytes | ||
+ | // respond perhaps? | ||
+ | stream.Write(newBytes, | ||
+ | } | ||
+ | server.Close(); | ||
+ | } | ||
+ | </ | ||