C#应用 - 07.怎么实现TCP通信

  1. 实现TCP通信需要实例化TcpListener对象和TcpClient对象。
  2. 首先实例化TcpListener对象并调用Start(),使其监听指定的IP地址和端口号,等待连接;然后实例化TcpClient对象并调用Connect(),使其连接指定的IP地址和端口号,完成连接。
  3. TcpListener对象接收和发送数据是利用Socket对象,分别调用Receive()和Send();TcpClient对象接收和发送数据是利用NetworkStream对象,分别调用Read()和Write()。
  4. 注意!接收和发送数据都是依靠byte数组,需要设置合适的数组长度。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace _07
{
    
    
    class Program
    {
    
    
        public static IPEndPoint iPEndPoint;

        public static Socket listenerSocket;

        public static NetworkStream clientStream;

        static void Main(string[] args)
        {
    
    
            iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
            new Thread(new ThreadStart(CreateListener)).Start();
            new Thread(new ThreadStart(CreateClient)).Start();
            while (true)
            {
    
    
                string message = Console.ReadLine();
                if (message.Contains("(Listener)"))
                {
    
    
                    SendListenerMessage(message);
                }
                if (message.Contains("(Client)"))
                {
    
    
                    SendClientMessage(message);
                }
            }
        }

        /// <summary>
        /// 创建TcpListener
        /// </summary>
        public static void CreateListener()
        {
    
    
            TcpListener listener = new TcpListener(iPEndPoint);
            listener.Start();
            listenerSocket = listener.AcceptSocket();
            byte[] bytes = new byte[1024];
            while (true)
            {
    
    
                int count = listenerSocket.Receive(bytes);
                Console.WriteLine($"This is Listener : {
      
      Encoding.UTF8.GetString(bytes, 0, count)}");
                Console.WriteLine();
            }
        }

        /// <summary>
        /// 创建TcpClient
        /// </summary>
        public static void CreateClient()
        {
    
    
            TcpClient client = new TcpClient();
            client.Connect(iPEndPoint);
            clientStream = client.GetStream();
            byte[] bytes = new byte[1024];
            while (true)
            {
    
    
                int count = clientStream.Read(bytes);
                Console.WriteLine($"This is Client : {
      
      Encoding.UTF8.GetString(bytes, 0, count)}");
                Console.WriteLine();
            }
        }

        /// <summary>
        /// 发送监听者消息
        /// </summary>
        /// <param name="message"></param>
        public static void SendListenerMessage(string message)
        {
    
    
            listenerSocket.Send(Encoding.UTF8.GetBytes(message));
        }

        /// <summary>
        /// 发送客户端消息
        /// </summary>
        /// <param name="message"></param>
        public static void SendClientMessage(string message)
        {
    
    
            clientStream.Write(Encoding.UTF8.GetBytes(message));
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44021223/article/details/121456184
今日推荐