简单的网络心跳包实现(如何确保client在线)
2016-05-06 19:59
645 查看
维护通信双方之间的网络连接,判断通信客户是否正常在线!
接受: case "Bit": string ipAndport = splitString[1].Trim() + ":" + splitString[2].Trim(); BitUpdate(ipAndport); break; 发送: private delegate void BitUpdateDele(string ipAndport); /// <summary> /// 收到Bit包,修改心跳包标志为0 /// </summary> private void BitUpdate(string ipAndport) { if (lvwUser.InvokeRequired) { BitUpdateDele d = BitUpdate; lvwUser.Invoke(d, ipAndport); } else { for (int i = 0; i < lvwUser.Items.Count; i++) { if (lvwUser.Items[i].SubItems[1].Text == ipAndport) { lvwUser.Items[i].SubItems[2].Text = "0"; break; } } } } private delegate void BitDele(); /// <summary> /// 发送Bit包之前,修改心跳包标志,0--1,1++ /// </summary> private void Bit() { if (lvwUser.InvokeRequired) { BitDele d = Bit; lvwUser.Invoke(d); } else { for (int i = 0; i < lvwUser.Items.Count; i++) { if (lvwUser.Items[i].SubItems[1].Text != localIp.ToString() + ":" + port.ToString()) { string temp = lvwUser.Items[i].SubItems[2].Text; if (temp == "0") lvwUser.Items[i].SubItems[2].Text = "1"; else { lvwUser.Items[i].SubItems[2].Text = (int.Parse(temp) + 1).ToString(); } } } } } /// <summary> /// 每隔2秒,进行Bit包发送 /// </summary> private void timer1_Tick(object sender, EventArgs e) { Bit(); string Bit = "Bit," + localIp.ToString() + "," + port.ToString(); SendMessage(localIp,Bit); } /// <summary> /// 进行判断,如果心跳包标志大于3时,说明已经离线删除用户 /// </summary> private void BitJudge() { if (lvwUser.InvokeRequired) { BitDele d = Bit; lvwUser.Invoke(d); } else { for (int i = 0; i < lvwUser.Items.Count; i++) { string temp = lvwUser.Items[i].SubItems[2].Text; if (int.Parse(temp) > 3) lvwUser.Items.RemoveAt(i); } } } private void timer2_Tick(object sender, EventArgs e) { BitJudge(); }
相关文章推荐
- Android网络通信之HttpURLConnection
- windows操作系统自带的TCP端口转发
- 4. Android框架和工具之 android-async-http
- JAVA——TCP传输
- 设备VMnet0上的网络桥接无法运行
- apache支持https訪問
- 网游中的网络编程2:发送和接收数据包
- VMware Workstation环境下的Linux网络设置
- Nginx支持https訪問
- u-boot移植4:支持 网络
- TCP端口状态说明ESTABLISHED、TIME_WAIT
- Linux 下curl模拟Http 的get or post请求
- TCP socket
- Struts 2验证框架出错:403 for URL:http:////www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
- 封装的HttpClient工具类
- Http与https的总结
- iOS网络编程TCP/IP应用篇(五)-发送数据及其它(加密,重连)
- iOS 网络编程之TCP/IP <四> 根据协议解析数据
- 微软下载http://www.itellyou.cn/,系统、MSDN等
- redis在win10中出现Creating Server TCP listening socket *:6379: bind: No such file or directory