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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值