C#心跳機(jī)制客戶(hù)端的實(shí)現(xiàn)示例
窗體(richTextBox右顯示聊天)

步驟
點(diǎn)擊鏈接按鈕
tcpclient客戶(hù)端步驟
1創(chuàng)建客戶(hù)端對(duì)象
2連接服務(wù)器connect
3創(chuàng)建網(wǎng)絡(luò)基礎(chǔ)流發(fā)消息 .write發(fā)消息
4 創(chuàng)建網(wǎng)絡(luò)基礎(chǔ)流接消息 .read接消息
5 斷開(kāi)連接close()
窗體代碼
namespace _02_心跳機(jī)制客戶(hù)端
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TcpClient client;
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "連接")
{
try
{
client = new TcpClient();
client.Connect(comboBox1.Text, int.Parse(comboBox2.Text));
button1.Text = "斷開(kāi)";
StartRead();
HeartBeat();
}
catch (Exception ex)
{
MessageBox.Show("連接失敗");
}
}
else
{
client.Close();
timer.Stop();
button1.Text = "連接";
}
}
void StartRead()
{
byte[] bs = new byte[1024];
Task.Run(() =>
{
try
{
while (true)
{
int count = client.GetStream().Read(bs,0,bs.Length);
string msg = Encoding.UTF8.GetString(bs, 0, count);
richTextBox1.Invoke((Action)(() =>
{
richTextBox1.AppendText(msg + "\t\n");
}));
}
}
catch (Exception ex)
{
button1.Text = "連接";
}
});
}
Timer timer;
void HeartBeat()
{
timer = new Timer();
timer.Interval = 10000;
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
client.GetStream().Write(new byte[] { 1 }, 0, 1);
}
private void button2_Click(object sender, EventArgs e)
{
byte[] bs = Encoding.UTF8.GetBytes(textBox1.Text);
byte[] bs1 = new byte[bs.Length + 1];
bs1[0] = 0;
bs.CopyTo(bs1,1);
client.GetStream().Write(bs1, 0, bs1.Length) ;
}
}
}到此這篇關(guān)于C#心跳機(jī)制客戶(hù)端的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C#心跳機(jī)制客戶(hù)端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#操作圖片讀取和存儲(chǔ)SQLserver實(shí)現(xiàn)代碼
用C#將Image轉(zhuǎn)換成byte[]并插入數(shù)據(jù)庫(kù)/將圖片數(shù)據(jù)從SQLserver中取出來(lái)并顯示到pictureBox控件上,接下來(lái)將為你詳細(xì)介紹下實(shí)現(xiàn)步驟,感興趣的你可以參考下2013-03-03
C#中累加器函數(shù)Aggregate用法實(shí)例
這篇文章主要介紹了C#中累加器函數(shù)Aggregate用法,實(shí)例分析了C#中累加器的實(shí)現(xiàn)與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
C#中38個(gè)常用運(yùn)算符的優(yōu)先級(jí)的劃分和理解
這只我自己在學(xué)C#中的一些總結(jié),其中對(duì)于各級(jí)的劃分方式、各操作符的優(yōu)先級(jí)的理解并不見(jiàn)得正確,只是自己的看法,拿出來(lái)與大家分享2012-08-08
C#實(shí)現(xiàn)翻轉(zhuǎn)字符串的方法
這篇文章主要介紹了C#實(shí)現(xiàn)翻轉(zhuǎn)字符串的方法,涉及C#操作字符串的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
C#實(shí)現(xiàn)兩接口中同名方法實(shí)例分析
這篇文章主要介紹了C#實(shí)現(xiàn)兩接口中同名方法,涉及C#接口與方法的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
C#中public變量不能被unity面板識(shí)別的解決方案
這篇文章主要介紹了C#中public變量不能被unity面板識(shí)別的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
C#動(dòng)態(tài)創(chuàng)建button的方法
這篇文章主要介紹了C#動(dòng)態(tài)創(chuàng)建button的方法,涉及C#按鈕屬性動(dòng)態(tài)設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
C# Dictionary和SortedDictionary的簡(jiǎn)介
今天小編就為大家分享一篇關(guān)于C# Dictionary和SortedDictionary的簡(jiǎn)介,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
c#批量抓取免費(fèi)代理并且驗(yàn)證有效性的實(shí)戰(zhàn)教程
突破反爬蟲(chóng)限制的方法之一就是多用幾個(gè)代理IP,下面這篇文章主要給大家介紹了關(guān)于利用c#批量抓取免費(fèi)代理并且驗(yàn)證有效性的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07

