http://www.javashuo.com/article/p-gbbgtcpm-e.htmlhtml
漸漸的看過去,,,好多節了...服務器
這節作一個C# TCP客戶端函數
新建項目啥子的就不詳細截圖寫了,自行看前面瞭解 (個人文章只要是有序號的,必需要看前面,由於我所寫的教程便是基礎又是綜合)測試
先作個這個頁面,先作鏈接和斷開spa
連接TCP用這個變量線程
其實鏈接TCP 幾句就完了3d
我定義了一個函數是由於,其實鏈接時阻塞的,,因此咱須要開個任務調試
C# 的任務是這樣用code
OK 如今測試orm
因爲我是用的臺式機,,沒有無線網卡,,,因此不能鏈接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();//剛纔寫的那個函數 } } }
測試
好,,完全作作成動態的
測試