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();
        }
    }


}
复制代码

 

 

 

 

 

 

 

 

 

 

 

 

posted @   FredGrit  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示