如何使用.NET中的TCP类实现两台主机间的通信

2025-11-24 18:50:07

1、首先创建TCPSender客户端(TCPDemon)。这里选择WinForm程序。

如何使用.NET中的TCP类实现两台主机间的通信

如何使用.NET中的TCP类实现两台主机间的通信

2、添加IP地址和端口号输入框,以及发送按钮。在发送按钮处编辑事件代码如下:

private void btnSend_Click(object sender, EventArgs e)

        {

            TcpClient tcpClient = new TcpClient(txtHost.Text, Int32.Parse(txtPort.Text));

            NetworkStream ns = tcpClient.GetStream();

            FileStream fs = File.Open("greeting.txt", FileMode.Open);

            int data = fs.ReadByte();

            while(data!=-1)

            {

                ns.WriteByte((byte)data);

                data = fs.ReadByte();

            }

            fs.Close();

            ns.Close();

            tcpClient.Close();            

        }

在上述代码中,从文本款中读入IP地址和端口号,初始化TcpClient类。创建网络数据流类型NetworkStream,并从一个文本中读入内容,然后写入TcpClient的数据流中。

如何使用.NET中的TCP类实现两台主机间的通信

如何使用.NET中的TCP类实现两台主机间的通信

3、创建TCPReceiver客户端。该客户端在启动的后开始监听特定IP地址上的端特定端口号(这里是“192.168.1.10:2112”)。添加关键代码如下:

 public Form1()

        {

            InitializeComponent();

            Thread thread = new Thread(new ThreadStart(Listen));

            thread.Start();

        }

        public void Listen()

        {

            IPAddress localAddr = IPAddress.Parse("127.0.0.1");

            int port = 2112;

            TcpListener tcpListener = new TcpListener(localAddr, port);

            tcpListener.Start();

            while (true)

            {

                TcpClient tcpClient = tcpListener.AcceptTcpClient();//接受挂起的tcp请求

                NetworkStream ns = tcpClient.GetStream();

                StreamReader sr = new StreamReader(ns);

                string result = sr.ReadToEnd();

                //显示读取的字符串

                Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });

            }

        }

        public void UpdateDisplay(string text)

        {

            txtDisplay.Text = text;

        }

        protected delegate void UpdateDisplayDelegate(string text);

在上述代码中,TcpListener这个类对端口号进行监听。同时创建NetworkStream读取TcpClient中的数据。为了持续监听,使用了线程工具。同时,为了不堵塞界面主线程,使用了委托以及Invoke()机制。

如何使用.NET中的TCP类实现两台主机间的通信

如何使用.NET中的TCP类实现两台主机间的通信

4、测试程序。先启动接收客户端和发送客户端测试通信过程。

如何使用.NET中的TCP类实现两台主机间的通信

如何使用.NET中的TCP类实现两台主机间的通信

如何使用.NET中的TCP类实现两台主机间的通信

5、处理错误情况。TcpClient发送失败时(“由于目标计算机积极拒绝,无法连接”)。因此在发送的时候要确保目的主机相应端口号处于监听状态,否则发送失败。

如何使用.NET中的TCP类实现两台主机间的通信

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢