我是靠谱客的博主 从容鲜花,最近开发中收集的这篇文章主要介绍c# socket接收字符串_基于Socket开发TCP传输客户端,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ead5e1432b17d0eeacb879c3a0af1ac6.png

​1、程序界面设计

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

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

04f45da1bdaeb009aacdefc5cde0cfef.png

2、程序代码设计

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

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

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

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

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

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

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

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

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

fda66d169b3eb0818142099d50cc5d11.png

3、程序功能调试

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

  • 建立连接与断开连接:

20dbff8ce18365f4a18d85c8d8830044.png
  • 各种数据类型发送与接收

818cfdd7abbae64d090ec38a191d1e2e.png

ee818c1ce6d7c7b1952f633363f6aedf.png

最后

以上就是从容鲜花为你收集整理的c# socket接收字符串_基于Socket开发TCP传输客户端的全部内容,希望文章能够帮你解决c# socket接收字符串_基于Socket开发TCP传输客户端所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部