首页 > 编程语言 >C# TcpClient bind,listen,accept,send receive

C# TcpClient bind,listen,accept,send receive

时间:2024-09-02 20:04:56浏览次数:5  
标签:TcpClient Console stream C# bind client WriteLine msg using

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


}

 

 

 

 

 

 

 

 

 

 

 

 

标签:TcpClient,Console,stream,C#,bind,client,WriteLine,msg,using
From: https://www.cnblogs.com/Fred1987/p/18393416

相关文章