19-ESP8266 SDK開發基礎入門篇--C# TCP客戶端編寫 , 連接和斷開


https://www.cnblogs.com/yangfengwu/p/11130428.html

 

漸漸的看過去,,,好多節了...

 

這節做一個C# TCP客戶端

新建項目啥子的就不詳細截圖寫了,自行看前面了解 (我的文章只要是有序號的,必須要看前面,因為我所寫的教程即是基礎又是綜合)

 

 

 

 

先做個這個頁面,先做連接和斷開

 

 

鏈接TCP用這個變量

 

 

其實連接TCP 幾句就完了

 

 我定義了一個函數是因為,其實連接時阻塞的,,所以咱需要開個任務

C# 的任務是這樣用

 

 

 OK  現在測試

由於我是用的台式機,,沒有無線網卡,,,所以不能連接WiFi模塊了...

我用本機的調試助手測試

 

 

 

 

 

 

 

 

 

 

 

 

 啟動

 

 

 

 

 

 

 好現在咱用按鈕控制連接和斷開

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace TCPClient
{
    public partial class Form1 : Form
    {
        private TcpClient myTcpClient = null;// TcpClient

        Thread ConnectThread;//連接線程
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }


        private void ConnectMethod()
        {
            myTcpClient = new TcpClient();                      //實例化myTcpClient
            try
            {
                myTcpClient.Connect("192.168.1.2", 60000);//連接服務器
                //連接上以后往下執行
                Invoke((new Action(() => 
                {
                    button1.Text = "斷開";
                })));
            }
            catch (Exception)
            {
                //異常處理函數
                Invoke((new Action(() =>
                {
                    button1.Text = "連接";
                })));
                try { myTcpClient.Close(); }catch { } //關閉連接
            }
        }


        //連接和斷開按鈕
        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "連接")
            {
                ConnectThread = new Thread(ConnectMethod);//創建任務
                ConnectThread.Start();//啟動任務
            }
            else
            {
                try { myTcpClient.Close(); } catch { } //關閉連接
                Invoke((new Action(() =>
                {
                    button1.Text = "連接";
                })));
            }
        }
    }
}

 

 

 

測試

 

 

 

 

 接着用上

 

 首先做個功能,,一開始IP 那個下拉框,顯示出來電腦的IP  ,,下拉的時候也刷新下顯示

 

/// <獲取本機 IP 地址>
        /// 
        /// </summary>
        /// <returns></returns>
        private void getIPAddress()
        {
            IPAddress[] hostipspool = Dns.GetHostAddresses("");//獲取本機所以IP
            comboBox1.Items.Clear();//清除下拉框里面的內容
            foreach (IPAddress ipa in hostipspool)
            {
                if (ipa.AddressFamily == AddressFamily.InterNetwork)
                {
                    comboBox1.Items.Add(ipa.ToString());//下拉框加入IP數據
                    comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//顯示第一個
                }
            }
        }

 

然后是下拉事件

 

 

 

 

 

namespace TCPClient
{
    public partial class Form1 : Form
    {
        private TcpClient myTcpClient = null;// TcpClient

        Thread ConnectThread;//連接線程
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            getIPAddress();//剛才寫的那個函數.獲取電腦IP,並顯示在下拉框
        }


        /// <獲取本機 IP 地址>
        /// 
        /// </summary>
        /// <returns></returns>
        private void getIPAddress()
        {
            IPAddress[] hostipspool = Dns.GetHostAddresses("");//獲取本機所以IP
            comboBox1.Items.Clear();//清除下拉框里面的內容
            foreach (IPAddress ipa in hostipspool)
            {
                if (ipa.AddressFamily == AddressFamily.InterNetwork)
                {
                    comboBox1.Items.Add(ipa.ToString());//下拉框加入IP數據
                    comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//顯示第一個
                }
            }
        }


        private void ConnectMethod()
        {
            myTcpClient = new TcpClient();                      //實例化myTcpClient
            try
            {
                myTcpClient.Connect("192.168.1.2", 60000);//連接服務器
                //連接上以后往下執行
                Invoke((new Action(() => 
                {
                    button1.Text = "斷開";
                })));
            }
            catch (Exception)
            {
                //異常處理函數
                Invoke((new Action(() =>
                {
                    button1.Text = "連接";
                })));
                try { myTcpClient.Close(); }catch { } //關閉連接
            }
        }


        //連接和斷開按鈕
        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "連接")
            {
                ConnectThread = new Thread(ConnectMethod);//創建任務
                ConnectThread.Start();//啟動任務
            }
            else
            {
                try { myTcpClient.Close(); } catch { } //關閉連接
                Invoke((new Action(() =>
                {
                    button1.Text = "連接";
                })));
            }
        }

        private void comboBox1_DropDown(object sender, EventArgs e)
        {
            getIPAddress();//剛才寫的那個函數
        }
    }
}

 

 

 

測試

 

 

 

好,,徹底做做成動態的

 

 

 

 

 

 

 

 

 

 

 測試

 

 

 

 

https://www.cnblogs.com/yangfengwu/p/11192603.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM