C# TcpClient bind,listen,accept,send receive
//server using System; using System.Net; using System.Net.Sockets; using System.Text; namespace ConsoleApp63 { internal class Program { static void Main(string[] args) { int port = 11000; TcpServer server = new TcpServer(port); Console.WriteLine("Press Enter to exit!"); Console.ReadLine(); server.server.Stop(); Console.WriteLine("Hello, World!"); } } public class TcpServer { public TcpListener server; private const int BufferSize = 1024; public TcpServer(int port) { server = new TcpListener(IPAddress.Any, port); server.Start(); Console.WriteLine($"Server started on port {port}"); AcceptClients(); } private void AcceptClients() { while (true) { TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Connected to client!"); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[BufferSize]; int bytesRead; try { while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { string dataReceived = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine($"Received from client:{dataReceived}"); byte[] msg = Encoding.UTF8.GetBytes($"Server:{dataReceived}"); stream.Write(msg, 0, msg.Length); Console.WriteLine($"Sent to client:Server:{dataReceived}"); } } catch (Exception ex) { Console.WriteLine($"Error handling client:{ex.Message}"); } finally { stream.Close(); client.Close(); Console.WriteLine("Client disconnected!"); } } } private void HandleClientComm(object? state) { TcpClient client = (TcpClient)state; if (client == null) { return; } NetworkStream stream = client.GetStream(); byte[] buffer = new byte[BufferSize]; int bytesRead; try { while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { string dataReceived = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine($"Received from client:{dataReceived}"); byte[] msg = Encoding.UTF8.GetBytes($"Server:{dataReceived}"); stream.Write(msg, 0, msg.Length); Console.WriteLine($"Sent to client:Server:{dataReceived}"); } } catch (Exception ex) { Console.WriteLine($"Error handling client:{ex.Message}"); } finally { stream.Close(); client.Close(); Console.WriteLine("Client disconnected!"); } } } }
//client using System.Net.Sockets; using System; using System.Text; using System.IO; namespace ConsoleApp64 { internal class Program { static void Main(string[] args) { TcpClient client = null; NetworkStream stream; try { client = new TcpClient("127.0.0.1", 11000); while (true) { stream = client.GetStream(); string msg = $"Client {Guid.NewGuid().ToString()}"; byte[] data = Encoding.UTF8.GetBytes(msg); stream.Write(data, 0, data.Length); Console.WriteLine($"Sent:{msg}"); data = new byte[256]; int bytes = stream.Read(data, 0, data.Length); string responseData = Encoding.ASCII.GetString(data, 0, bytes); //stream.Close(); Thread.Sleep(1000); } } catch (ArgumentNullException ex) { Console.WriteLine($"ArgumentNullException:{ex}"); } catch (SocketException ex) { Console.WriteLine($"SocketException:{ex}"); } finally { client?.Close(); } Console.WriteLine("Hello, World!"); Console.Read(); } } }
分类:
wpf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述