客户端|基于Socket开发TCP传输客户端

客户端|基于Socket开发TCP传输客户端

文章图片

客户端|基于Socket开发TCP传输客户端

文章图片

客户端|基于Socket开发TCP传输客户端

文章图片

客户端|基于Socket开发TCP传输客户端

文章图片

客户端|基于Socket开发TCP传输客户端


1 程序界面设计

TCP客户端在上位机开发中应用很广 , 大多数情况下 , 上位机软件都是作为一个TCP客户端来与PLC或其他服务器进行通信的 。 TCP客户端的主要功能就是连接服务器、发送数据、接收数据、断开连接 , 而不同场合的区别在于发送数据和接收数据的内容不同 。
本案例主要是开发一个TCP客户端软件 , 具备基本的连接功能 , 并可以发送ASCII、UTF8等不同格式的字符串 , 也支持发送16进制字符串发送 , 同时支持文件和JSON格式数据发送 。 根据以上功能 , 设计程序界面如下图所示:



2 程序代码设计
  • 接收信息显示:首先编写一个接收信息显示的方法 , 这里是通过ListView来展示接收信息的 。
  • 连接服务器:连接服务器首先实例化Socket对象 , 然后通过调用Connect的方法来实现 , 连接成功后 , 开启一个线程来接收服务器返回的数据 , 具体代码如下:
  • 断开连接服务器:断开连接服务器直接调用Socket的相关API方法即可 。
  • 接收数据:对于数据接收及解析 , 由于本案例的客户端软件支持多种不同形式数据发送 , 那么接收必然也支持多种形式 , 那么对于不同的形式 , 我们创建了一个枚举类型 , 这样方便后续扩展 , 代码如下所示:

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

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

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