博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GJM : Socket TCP 通信连接(四)
阅读量:4323 次
发布时间:2019-06-06

本文共 728 字,大约阅读时间需要 2 分钟。

中,我们已经学会了服务器的代码,至此我们的SOcket的TCP通讯连接已经完成。这一篇我们总结一下。

服务器开启后,开始异步监听客户端连接。客户端连接时,实例化TCPListenerClient,并开始异步监听数据。接收到数据时,判断数据长度,0则为断开连接,不为0则引发接收数据完成事件。

可以通过TCPListenerClient发送数据或断开连接。

服务器关闭时要先断开所有客户端连接。

客户端连接服务器,开始异步接收服务器数据。接收到数据时,判断数据长度,0则为断开连接,不为0则引发接收数据完成事件。

客户端连接服务器后,可以发送数据与断开连接。

SocketHandler是专门处理接收发送的对象。

发送数据时,要判断发送队列是否有数据正在发送或等待发送。如果有数据,则把要发送的数据加入发送队列。

发送数据过程,先发送要发送数据的长度=>ushor类型=>byte[]类型。然后再发送主数据。

发送完成时,判断发送队列是否还有数据,有则继续发送。返回是否发送成功。遇到异常则不成功。

接收数据时,先接收byte[2]的主要数据长度头信息,转换为ushort类型。

然后接收这个长度的数据,EndRead里要判断是否接收完全,不完全则继续接收。

接收完成后直接返回接收到的数据。

 

下面发一个简易测试延迟程序的示例代码。

客户端。

View Code

服务器。

View Code

客户端发送当前时间转byte[]数据

服务器接收到后又发送客户端发送的数据。

客户端收到数据后,用当前时间减去收到的时间,除以2,得到网络延迟。

 

项目文件:

 

原文地址:

转载于:https://www.cnblogs.com/TDou/p/6478908.html

你可能感兴趣的文章
Composite UI Application Block (CAB) 概念和术语
查看>>
64位MATLAB和C混合编程以及联合调试
查看>>
原生js大总结二
查看>>
PHP基础
查看>>
UVa 11488 超级前缀集合(Trie的应用)
查看>>
Django 翻译与 LANGUAGE_CODE
查看>>
[转]iOS教程:SQLite的创建数据库,表,插入查看数据
查看>>
【转载】OmniGraffle (一)从工具栏开始
查看>>
初识ionic
查看>>
java 中打印调用栈
查看>>
开发 笔记
查看>>
数据挖掘算法比赛 - 简单经验总结
查看>>
生成商户订单号/退款单号
查看>>
使用Android OpenGL ES 2.0绘图之六:响应触摸事件
查看>>
我们过去几年做对了哪些事
查看>>
ubuntu 16.04LTS
查看>>
javascript深入理解js闭包
查看>>
Oracle的安装
查看>>
Android Socket连接PC出错问题及解决
查看>>
Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
查看>>