socket接收数据_「完整案例」基于Socket开发TCP传输客户端

本文介绍了一款TCP客户端软件的设计与实现过程,包括程序界面、代码设计及功能调试等内容。该客户端支持ASCII、UTF8等多种格式字符串发送,还能发送16进制字符串、文件和JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 程序界面设计【新阁在线教育 服务号:thinger_as】

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

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

282d14a15a20b36f46f047c8bc6dca88.png

2 程序代码设计

  • 接收信息显示:首先编写一个接收信息显示的方法,这里是通过ListView来展示接收信息的。
e9e8cb761fb594a9bdd0273aa4e22316.png
  • 连接服务器:连接服务器首先实例化Socket对象,然后通过调用Connect的方法来实现,连接成功后,开启一个线程来接收服务器返回的数据,具体代码如下:
6c6b7eebcd3797e83148ba197ab48167.png
  • 断开连接服务器:断开连接服务器直接调用Socket的相关API方法即可。
5a553d9606b2d2f6b4108d88ed629c12.png
  • 接收数据:对于数据接收及解析,由于本案例的客户端软件支持多种不同形式数据发送,那么接收必然也支持多种形式,那么对于不同的形式,我们创建了一个枚举类型,这样方便后续扩展,代码如下所示:【新阁在线教育 服务号:thinger_as】
c803182f08520cb89a5875a51af9abdd.png
  • 因此在数据接收处理时,我们用第一个字节作为类型判断,比如第一个字节如果为0,那么则认为接收的数据为ASCII字符串,也将按照这种形式来进行解析,从第二个字节开始一直到最后,是有效数据部分,所以数据接收及解析方法如下所示:
13abd4a02ee3c754690d6502062f2027.png
  • 发送ASCII字符串:对于ASCII字符串,首先要将发送的字符串按照ASCII的编码格式转换成字节数组,然后给这个字节数组前面增加一个字节,字节数值为Message.ASCII,代码如下所示:【新阁在线教育 服务号:thinger_as】
1d812be754c744a4cf91f63d3d7478bd.png
  • 发送文件:发送文件之前首先要选择文件,选择文件主要使用OpenFileDialog组件,代码如下:
db8b0a34fb8062278e7446ce14c6f477.png
  • 选择文件之后,发送文件就是将选择的文件内容转换成字节数组,然后给这个字节数组前面增加一个字节,字节数值为Message.File,这里会发送两次,第一次是发送一个字符串,告诉服务器要发送的文件名称,采用的是UTF8编码,代码如下所示:
17eb22d82a01c942ad0aa815b0c0b883.png
  • 发送JSON数据:JSON数据主要会涉及到实体对象和JSON文件的转换,这里使用Newtonsoft.Json库编写了一个JSONHelper的方法,然后需要创建了一个实体对象集合,然后通过EntityToJSON方法转换成JSON字符串,再将JSON字符串转换成字节数组,同样,前面需要增加一个字节,字节数值为Message.JSON,代码如下:
4caea4121b2364eff805a13e475fd41b.png

3 程序功能调试

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

  • 建立连接与断开连接:
6329710a76b7e7aa5436fc22c16e54dc.png
  • 各种数据类型发送与接收
97051cd69eb0edc113a01cf76ede5096.png
c278aef2dbd6c0e358cd76bdd024bd69.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值