TCP传输数据,线程使用Socket接收

首先发送tcp数据到指定的ip和端口

实例1

                TcpClient tcpClient = new TcpClient();
                //txthost.Text是ip地址  txtport.Text是端口
                tcpClient.Connect(IPAddress.Parse(txthost.Text), Int32.Parse(txtport.Text));
                NetworkStream ns = tcpClient.GetStream();
                //默认都是TRUE 可读
                if (ns.CanWrite)
                {
                    //这里的textBox3.Text是传输的文本内容
                    Byte[] sendBytes = Encoding.UTF8.GetBytes(textBox3.Text);
                    ns.Write(sendBytes, 0, sendBytes.Length);
                }
                //关闭流
                ns.Close();
                //关闭tcp连接
                tcpClient.Close();

实例2

               //替换成配置的站点和端口
                TcpClient client = new TcpClient(DisposeClass.alhgPlatformUrl, Convert.ToInt32(DisposeClass.alhgPlatformPort));
                NetworkStream stream = client.GetStream();
                //reportStr表示传输的内容
                byte[] datas = Encoding.UTF8.GetBytes(reportStr);
                stream.Write(datas, 0, datas.Length);

接收窗体

 public Form1()
        {
            InitializeComponent();
            //实例化一个线程
            Thread thread = new Thread(new ThreadStart(SocketListen));
           //线程后台运行 不能造成页面卡死
            thread.IsBackground = true;
            thread.Start();
            IPAddress ipAddress = IPAddress.Any; //IPAddress.Parse("172.16.102.11");
            this.Text = ipAddress.ToString() + "正在监听...";
        }
        public void SocketListen()
        {
            //socket接收tcp传输
            Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //绑定的监听端口
            listener.Bind(new IPEndPoint(IPAddress.Any, 9999));
            //最大连接次数
            listener.Listen(100);
            //接收 一般项目启动后 就会到这一步 一直接受等待 直到有对应的tcp端口传输过来
            Socket socket = listener.Accept();
            Stream netStream = new NetworkStream(socket);
            StreamReader reader = new StreamReader(netStream);
            string result = reader.ReadToEnd();
            Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
            socket.Close();
            listener.Close();
        }
posted @ 2021-08-06 17:42  原往  阅读(280)  评论(0)    收藏  举报