vlambda博客
学习文章列表

【完整案例】基于Socket开发TCP传输客户端

1 程序界面设计

        TCP客户端在上位机开发中应用很广,大多数情况下,上位机软件都是作为一个TCP客户端来与PLC或其他服务器进行通信的。TCP客户端的主要功能就是连接服务器、发送数据、接收数据、断开连接,而不同场合的区别在于发送数据和接收数据的内容不同。

        本案例主要是开发一个TCP客户端软件,具备基本的连接功能,并可以发送ASCII、UTF8等不同格式的字符串,也支持发送16进制字符串发送,同时支持文件和JSON格式数据发送。根据以上功能,设计程序界面如下图所示:

2 程序代码设计

  • 接收信息显示:首先编写一个接收信息显示的方法,这里是通过ListView来展示接收信息的。

【完整案例】基于Socket开发TCP传输客户端

  • 连接服务器:连接服务器首先实例化Socket对象,然后通过调用Connect的方法来实现,连接成功后,开启一个线程来接收服务器返回的数据,具体代码如下:

【完整案例】基于Socket开发TCP传输客户端

  • 断开连接服务器:断开连接服务器直接调用Socket的相关API方法即可。

【完整案例】基于Socket开发TCP传输客户端

  • 接收数据:对于数据接收及解析,由于本案例的客户端软件支持多种不同形式数据发送,那么接收必然也支持多种形式,那么对于不同的形式,我们创建了一个枚举类型,这样方便后续扩展,代码如下所示:

【完整案例】基于Socket开发TCP传输客户端

  • 因此在数据接收处理时,我们用第一个字节作为类型判断,比如第一个字节如果为0,那么则认为接收的数据为ASCII字符串,也将按照这种形式来进行解析,从第二个字节开始一直到最后,是有效数据部分,所以数据接收及解析方法如下所示:

【完整案例】基于Socket开发TCP传输客户端

  • 发送ASCII字符串:对于ASCII字符串,首先要将发送的字符串按照ASCII的编码格式转换成字节数组,然后给这个字节数组前面增加一个字节,字节数值为Message.ASCII,代码如下所示:

【完整案例】基于Socket开发TCP传输客户端

  • 发送文件:发送文件之前首先要选择文件,选择文件主要使用OpenFileDialog组件,代码如下:

【完整案例】基于Socket开发TCP传输客户端

  • 选择文件之后,发送文件就是将选择的文件内容转换成字节数组,然后给这个字节数组前面增加一个字节,字节数值为Message.File,这里会发送两次,第一次是发送一个字符串,告诉服务器要发送的文件名称,采用的是UTF8编码,代码如下所示:

【完整案例】基于Socket开发TCP传输客户端

  • 发送JSON数据:JSON数据主要会涉及到实体对象和JSON文件的转换,这里使用Newtonsoft.Json库编写了一个JSONHelper的方法,然后需要创建了一个实体对象集合,然后通过EntityToJSON方法转换成JSON字符串,再将JSON字符串转换成字节数组,同样,前面需要增加一个字节,字节数值为Message.JSON,代码如下:

【完整案例】基于Socket开发TCP传输客户端

3 程序功能调试

由于TCP服务器软件还没有开发,所以这里我们使用网络调试助手来进行功能调试:

  • 建立连接与断开连接:
【完整案例】基于Socket开发TCP传输客户端
  • 各种数据类型发送与接收
【完整案例】基于Socket开发TCP传输客户端
【完整案例】基于Socket开发TCP传输客户端



课程正在直播,快速扫码加入吧!



回顾往期内容