毕业设计之Socket通信

记我的毕业设计(一)

Socket实现客户端和服务器之间的通信

第一次做毕业设计也是我的第一篇博客,不知为何此刻显得特别神圣与庄重。我的毕业设计做的是用STM32F4采集开关柜的状态信息实现数据上网。具体的数据采集工作我将放到下一篇博客进行讲解。先贴出我的毕业设计的总体设计方案
在这里插入图片描述
本篇文章主要讲socket通信。为了学习socket通信还是在网上参考了很多关于这方面的文章,我对于socket的学习分为两个阶段。第一个阶段是当时做大创需要,用socket实现数据上网,由于时间比较慌张心态也有点不好。所以感觉并没有太大的收获。第二个阶段是一个月之后的毕业设计这次我看了传智播客的关于c#语言的课程,其中刚好有讲到socket通信部分,感觉收获很大。

Socket理解

为什么要选择socket进行网络通信,要解决这个问题首先要弄清楚socket究竟是什么,它的作用是怎样的呢?关于socket的定义已经有很多文章有过详细的讲解,这里我就结合自身感受说一下我对于它的理解,如果有不对的地方希望各位读者积极给我指出。socket我的理解是一种网络的通信工具,它包含了很多通信协议,如:TCP/UDP等。它将很多网络的基础协议封装在其中,使用者不需要进行复杂的配置过程,只需要进行选择即可。如下面代码所示:

// 用以指定socket通信的协议
Socket socketWatch=new Socket(AddressFamily.InterNetwork,SocketType .Stream , ProtocolType.Tcp );

这里我选择的是以数据流的方式进行通信,选择的是TCP协议。

Socket异步通信的重要说明

在我第一阶段的学习过程中从CSDN上着了很多关于socket的例程来看,虽然通过这样的不断学习知道了socket通信的基本原理,但是晚上的例程大多讲的都是同步通信,而实际生产生活过程中要想实现类似于QQ一样的通信就必须使用异步通信来实现。这里我贴上socket通信的原理图,从图中来说明怎样具体实现异步通信的功能。
在这里插入图片描述
如上所示是socket通信原理图,如果要实现socket之间的相互收发就必须在双方建立起连接之后使得read函数一直处于监听状态,write函数在相应事件下执行,这样便可以实现双方之间一直通信。
在上述过程中如果是用c#语言进行编程,则需要使用到多线程。服务器端需要设置两个后台线程,一个用于监听连接,一个用于实现接收消息。代码如下:

// 监听连接
  Thread th = new Thread(Listen);
  th.IsBackground = true;
  th.Start(socketWatch);
  void Listen(
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值