0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于客户机/服务器模型实现局域网通信系统的设计

电子设计 来源:现代电子技术 作者:刘庆之 , 武波 2021-05-28 10:17 次阅读

1 引 言

客户机/服务器模型中,发起连接的计算机被称为客户机,接收并建立连接的计算机被称为服务器。根据此模型,计算机网络通信也多采用架设服务器并通过服务器转发的方式进行客户机之间的数据通信,然而,这种网络通信方式存在一定的缺点,主要在于:

(1)如果网络中各主机间需要通信,就必须先要架设服务器,使用非常不方便。

(2)各个网络主机之间的通信数据必须先由源客户机发给服务器,再通过服务器转发至目的客户机,因此数据并没有在客户机之间直接传递,通信效率较低。

本文就是针对以上问题,以客户机/服务器模型为基础,设计出一种不需要服务器支持的局域网通信系统,使局域网内不同计算机问的通信不再需要通过服务器中转,实现了不同计算机问的数据的直接传输。

2 系统框架设计

ISO的OSI七层模型中,传输层有TCP和UDP两种协议,对应于这两种协议有流式套接字和数据报套接字。该系统使用了UDP广播消息和建立TCP连接进行数据传输的方式。

多线程的并行处理可以提高程序的吞吐量,多任务的相互独立性也使程序在运行时间效率方面得到提高。网络通信中任务繁杂,因此将网络通信机制与多线程并行处理机制结合是一种有效的解决方案。该系统的通信任务主要通过3个线程并行完成,分别为:

(1)负责收发广播的线程:该线程通过收发广播消息的形式,获得局域网内使用该系统的计算机信息。将局域网内使用该系统的计算机信息添加进本地链表;将局域网内退出该系统的计算机信息从本地链表中删除。本地链表维护了局域网内所有使用该系统的计算机的信息,为系统其他功能的实现提供数据。

(2)负责监听端口建立连接的线程:该线程的功能类似于客户机/服务器模型中的服务器端,对局域网中的连接请求进行监听,对于新的连接请求建立新的Socket用于连接,并且对于不同的连接请求创建新的数据接收线程,用于处理连接后的消息传递以及文件传输等功能。

(3)负责处理外部终端控制命令的线程:该线程用于该系统与用户的交互,处理外部终端的控制命令,并对于不同的命令实现相应的功能。

3 系统实现具体流程

3.1 发送和接收广播的线程设计流程

广播消息线程使用UDP套接口,他与TCP套接口的主要区别在于通信双方不需要事先建立连接即可收发数据。该线程工作流程如下:

(1)主机在局域网中广播本机“上线”消息;

(2)主机等待接收局域网中的广播消息;

(3)如果主机收到其他计算机“上线”广播消息,则将发送该广播消息的计算机信息添加进本地链表,并且回复“确认”广播消息;如果主机收到“确认”广播消息,则对发送该广播消息的计算机信息进行判断,如果链表中没有记录,则添加进本地链表;如果主机收到“离线”广播消息,则将发送该消息的计算机在本地链表中的信息删除。

3.2 监听端口建立连接的线程设计流程

该线程监听TCP套接口,对于不同的连接请求创建新的数据接收线程并发处理。工作流程如下:

(1)创建本地Socket,并监听局域网中的连接请求;

(2)如果有连接请求进人,接收连接请求,并创建新的Socket和数据接收线程用于该连接的数据通信功能的实现。

因为该系统提供文件传输功能,所以在数据接收线程接收到数据包后,需要判断该数据包中的信息是否为文件传输开始标志。如果是文件传输开始标志,表明信息发送方将传输文件,则主机进入文件接收工作程序;如果不是文件传输开始标志,则主机在终端上显示接收到的消息。

3.3 命令处理线程的主要控制命令及其设计流程

(1)局域网在线计算机查询命令:顺序读取主机链表中所维护的所有的节点信息,终端显示局域网中所有在线计算机情况,包括其主机名、IP地址等;

(2)主机离线命令:广播“离线”消息,断开Socket连接,结束进程。

(3)发起连接命令:通过查询系统维护的计算机信息链表,获得想要与之建立连接的计算机的信息,发起连接,若连接成功,创建数据发送线程用于处理连接后的命令操作以及数据通信,并且阻塞命令处理线程,直到数据发送线程结束返回。

数据发送线程对终端输入进行读取和判断,如果是文件传输命令,则进入文件发送工作程序;否则,直接发送消息。

4 系统实现主要代码

基于客户机/服务器模型实现局域网通信系统的设计

5 结 语

本文基于网络Socket通信原理与多线程技术,给出了在Linux环境下不需要服务器支持的网络通信系统的设计与算法实现,此实现方法使局域网的计算机间通信效率得到了提高并且该系统使用非常方便,适用于局域网计算机间的即时数据通信。如何在此系统框架的基础上添加更多的数据通信功能以及如何加快文件传输速度将是进一步的研究工作。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87849
  • 服务器
    +关注

    关注

    12

    文章

    9123

    浏览量

    85324
  • 局域网
    +关注

    关注

    5

    文章

    751

    浏览量

    46277
收藏 人收藏

    评论

    相关推荐

    CC3200可以同时控制局域网和广域网吗?

    CC3200可以同时创建两个socket,实现局域网和广域网的同时控制吗?第1个socket做为tcp socket客户端连接云服务器的远程服务器端口。第2个socket做为tcp s
    发表于 04-01 15:25

    客户labview与服务器SQL连接,客户机需要装SQL数据库吗?

    服务器A装有数据库SQL 2008,想在客户机B用labview在A上建数据库及表,在客户机B上需要安装SQL吗?在A上应该怎样设置呢?新手求大神帮助,要是有源码更好,谢谢!
    发表于 06-12 07:46

    用Visual C#实现局域网通

    用Visual C#实现局域网通
    发表于 01-08 15:17

    labview OPC UA是否只能在局域网中使用

    首先使用Labview OPC UA 的范例进行实验。实验一:本地连接在同一台电脑上启动服务器客户机,通讯正常。实验二:分设备连接在两台电脑上实验,一台做客户机一台做服务器。这里
    发表于 07-24 15:09

    使用TCP/IP软件协议栈以实现局域网或者广域网中的通信

    和 STM32F2x7xx 微控制配有高质量 10/100 Mbit/s 以太网外设,支持媒 体独立接口 (MII)和缩减的媒体独立接口 (RMII),以便与物理层 (PHY)接口。 当使用以太网通信接口时,会使用 TCP/IP 软件协议栈以
    发表于 08-24 06:30

    NodeMCU作为TCP客户端是如何实现局域网内点亮Led灯的

    TCP是什么?NodeMCU作为TCP客户端是如何实现局域网内点亮Led灯的?
    发表于 12-21 06:44

    远程访问服务器局域网接口

    远程访问服务器局域网接口              局域网接口主要是用于远程访问服务器
    发表于 01-08 14:28 1177次阅读

    什么是客户机/服务器计算

    什么是客户机/服务器计算 客户机/服务器计算定义一种体系结构,在该结构中,程序逻辑分布在客户机系统
    发表于 04-06 17:25 4915次阅读

    NTP网络时间服务器在大型局域网的同步技术

    本章利用双机互备型ntp网络时间服务器实现局域网的时间同步解决方案。 1时间同步系统的配置全网配置一套时间同
    发表于 07-24 15:48 1955次阅读

    用Visual C#实现局域网通

    用Visual C#实现局域网通
    发表于 01-07 21:24 0次下载

    samba服务器配置

    通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,
    发表于 11-22 17:09 1572次阅读
    samba<b class='flag-5'>服务器</b>配置

    使用服务器客户机及java进行网络通信的程序和流程图免费下载

    本文档的主要内容详细介绍的是使用服务器客户机及java进行网络通信的程序和流程图免费下载。
    发表于 06-03 08:00 0次下载
    使用<b class='flag-5'>服务器</b>和<b class='flag-5'>客户机</b>及java进行网络<b class='flag-5'>通信</b>的程序和流程图免费下载

    局域网通信】NodeMCU之间的通信(二)

    和端口号。NodeMCU作为TCP客户实现局域网内点亮Led灯(通过路由中转)NodeMCU可以被配置为一个TCP客户端(如图4-1),同时将一台网络设备(如电脑)配置为TCP
    发表于 10-28 10:06 9次下载
    【<b class='flag-5'>局域网通信</b>】NodeMCU之间的<b class='flag-5'>通信</b>(二)

    为什么需要基于服务器局域网?

    如果您的公司经营多台计算机,则有重要的原因,您应该通过局域网局域网连接它们。要实现LAN的全部优势,您将需要添加一台称为服务器的集中式计算机来管理和优化网络。 基于
    的头像 发表于 11-18 15:23 844次阅读

    怎么打开局域网通讯协议

    怎么打开局域网通讯协议  局域网通讯协议(Local Area Network Protocol,缩写为LAN)是指计算机网络中用于实现局域网通信的一种协议。局域网通讯协议是
    的头像 发表于 08-31 17:02 1139次阅读