通信总结之二

串行通信——异步串行通信 目录 I、串口通信简介 一、定义 二、意义 三、分类 II、异步串行通信详解 一、数据格式 1. 起始位 2. 数据位 3. 奇偶校验位 4. 停止位 二、通信制式 1. 单工 2. 半双工 3. 全双工 三、通信速率 I、串口通信简介 一、定义 在一条传输线上,数据以“位”为单位进行逐个传输,即为串行通信。 二、意义 并行通信控制简单、相对传输速度快... 阅读详情

群聊服务器 

    群聊服务器要将所有连接到服务器上的客户端对象都集中到一起(比如一个队列)来处理,将其中每个对象发送的消息转发给其他所有连接的客户端,并且在有新连接加入时对其他的连接的客户端进行通知等等功能。所以需要编写几个类来分别实现这些功能。每个类的功能要尽量的单一,这样便于调试。

 

    服务器增加了验证登陆信息、转发消息等多个功能,也就需要增加几个类来辅助。首先对于登陆用户来说,需要验证其用户名和密码,创建一个DaoTools类:负责验证用户名和密码是否正确。验证用户信息的过程可以首先模拟一个数据库,用一个map存储用户名和对应的用户信息,在运行到验证模块前就将设置好的数据存入MAP,验证时,通过用户名得到对应的用户类,也就得到了该用户密码,验证是否符合。因此,也就需要创建一个用户信息类,其中存储用户名,密码以及以后可能用到的IP地址、登录时间等等信息。转发消息作为另外一个独立功能,也需要建立一个辅助类,其中放置通知上下线以及转发消息的方法。因为上线用户个数不定,可用一个队列来存放客户端处理线程类每增加一个客户连入,则启动一个处理线程,加入到队列中,而当前在线人数就是该队列的长度。转发消息则只要遍历队列,发送消息即可达成。

综上,总共需要设置五个类:

ChatServer类:创建服务器并等待连结。

ServerThread类:处理连结的线程类,读取客户端输入流并发送给客户端。

UserInfo类:用户信息类,存放用户属性。

DaoTools类:一个辅助类,使用时并不需要创建对象,直接调用其中存放的方法就好,因此其中的方法都是static方法。这个类中存放的是验证用户登录的方法。

ChatTools类:同样不需要创建对象,是一个辅助方法,转发客户机发送的消息,并有将新上线的用户即一个线程加入队列或者下线用户移除队列的方法。

 

    这里列出DaoTools类的代码,因为其中使用了静态块的方法。静态块是在类被加载之时就优先执行的代码,所以在验证用户信息之时,就不会出现map中无数据的情况。

package Server1;

import java.util.HashMap;
/**
 *
系统数据访问操作实现类
 * 帐号验证,数据保存,更改……
 * @author Administrator
 *
 */
public class DaoTool {
 /**
  * 查看这个用户是否可以登录成功
  * @param user:要检查的用户对象
  * @return:是否成功登录
  */
 public static boolean checkLogin(UserInfo user){
  //在此只验证用户名是否存在
  if(userDB.containsKey(user.getName())){
   return true;
  }
  System.out.println("认证失败!:"+user.getName());
  return false;
  
 }
 //内存用户信息数据库
 private static java.util.Map<String, UserInfo> userDB = new HashMap<String, UserInfo>();
 //静态块:模拟生成内存中的用户数据,用户名为user1~10
 //当程序启动时,这段代码(静态块中的)会自动执行,向userDB中放放数据
 static{
  for(int i =0;i<10;i++){
   UserInfo user = new UserInfo();
   user.setName("user"+i);
   user.setPassword("password"+i);
   userDB.put(user.getName(), user);
  }
 }
 
}

 简单客户端

 

    简单客户端与服务器类似,不过客户端不是要开放端口来等待连接,而是要知道服务器的IP和端口去连接。客户端对象是Socket类的对象,在创建时即要指定要连接的服务器的IP和端口。

    Socket client = new Socket("ip",port);

其中ip是一个代表地址的字符串,port则是一个int值。

    与服务器存在同样的问题,所以这条语句也需要try catch(当然throws也可以)。

    之后从这个Socket对象上取得输入输出流就可以与服务器进行通信了。当然,通信还是要按照一定的协议,这样双方才能够互相理解对方在说什么!

 

串行通信、并行通信;全双工、半双工、单工通信;同步通信、异步通信;通信速率 目录 串行通信 并行通信 串行通信与并行通信示意图 串行通信与并行通信的特性对比 全双工、半双工、单工通信 同步通信与异步通信 通信速率 串行通信 按照数据传送的方式,通信可分为串行通信和并行通信。串行通信时是指设备之间通过少量数据信号线(一般是8根以下)、地线及控制信号线,按数据位形式一位一位地传输数据的通信方式。 并行通信 一般是指使用8、16、32及64根或更多的数据线进行传输的通信方式。并行通信就像多条车道的公路,可以同时传输多位数据,而串行通信则像单条车道的公路,同一时刻.. 阅读详情

相关推荐

IIC总线、SPI总线、串口232通信、422通信、485通信、TCP/IP协议

最近在学习一些通信协议,查找资料,借鉴别人的论述,总结于下,仅供参考。相互学习,在此感谢几位博主写的技术贴! IIC总线协议:http://blog.youkuaiyun.com/zailushangha/article/details/8233448 SPI总线协议:http://blog.youkuaiyun.com/ce123_zhouwei/article/details/6897293

Charles' home 1万+

JAVA简单聊天室的实现

鉴于之前有不少同学在跟我要客户端的代码,我近期整理了一下,把整个工程都传到github上了。地址:https://github.co/Alexlingl/Chatroom 里面有比较详细的工程运行教程,这篇博客则主要对工程的代码实现进行介绍,没有通信知识基础的同学,在看这篇博客之前可以先看下我通信板块的另外几篇博客: 《JAVA通信(一)——输入数据到客户端》 《JAVA通信(二)——实现客...

Alexwym的博客 5万+

基于RS485通信的Modbus通信协议

通信可以分为两个方面:硬件层:RS485解决的是数据传输问题,也就是说如何将一个“0”或“1”传输到另外一端。(保证了数据可以转移到另一端)软件层:modbus是在硬件基础上的传输协议,解决的是数据传输的含义或意义。MCU要想实现RS485通信,必须借助电平转换芯片。 因为MCU是TTL电平信号,RS485是差分信号,如何将单端信号转换成差分信号就需要电平转换芯片。TTL电平在传输信号特性逻辑“0”对应的电气信号为0V,逻辑“1”对应的电气信号为5V。RS485通常有两根差分信号线,A和B,RS485的电平

有人住高楼,有人在深沟;有人光万丈,有人一身锈。 8004

通信方式的分类(串行通信和并行通信)

数据通信的基本方式根据数据的传输方式可以分为串行通信与并行通信两种。 串行通信又根据数据的同步方式,分为异步传送和同步传送两种方式。或者根据数据的传输方向与时间关系,分为单工通信、半双工通信及全双工通信三种方式。

Rocherrr的博客 3万+

数据通信基础(1)-数据通信概念、通信系统模型及通信方式

数据通信概念、数据通信系统模型及数据通信 方式。其中数据通信方式按照信道传输方式可分为串行通信和并行通信;按照消息传递方向与时间关系可以分为全双工通信、半双工通信、单工通信。

dxy0219的博客 1万+

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

通信方式、通信接口、通信总线、通信协议的关系

通信方式、通信接口、通信总线、通信协议的关系

Rocherrr的博客 3万+

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 602

串口通信基础(一)——串行与并行通信,同步与异步通信

串口通信基本概念(一)——串行与并行通信,同步与异步通信 一、串口通信简介 串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于

sym_robot的博客 3万+

RedPitaya火龙果板基础操作

火龙果板基础操作一级目录二级目录三级目录 一级目录 二级目录 三级目录

qq_41523340的博客 9727

别再只画GO图了!用R语言+Perl脚本搞定单细胞KEGG富集分析与圈图(附完整代码)

本文详细介绍了如何利用R语言和Perl脚本实现单细胞KEGG富集分析全流程,从基因ID转换到专业圈图可视化。通过对比KEGG与GO分析的互补价值,提供完整的代码实现和优化技巧,帮助研究者高效完成单细胞测序数据的通路分析,并生成高质量的圈图展示结果。

weixin_28694169的博客 405

通信协议、总线、接口,通信方式总结

是一组传输通道,在各种逻辑器件构成的传输数据的通道,一般由数据线、地址线和控制线构成。

2301_77178750的博客 6714

S32DS3.5图形化配置实战:从零构建S32K144通信接口工程

本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。

weixin_26834815的博客 200

[AUTOSAR通信篇] - AutoSAR通信架构

BSW层通信的三层架构,从上到下分别是通信服务、通信硬件抽象、通信驱动。

昂辉科技的博客 7623

VSCode终端打不开?3分钟搞定Windows下Terminal配置(附最新JSON设置方法)

本文针对Windows系统下VSCode终端无法启动的常见问题,提供了详细的诊断与解决方案。核心在于更新已弃用的旧配置,采用最新的JSON设置方法,通过定义`terminal.integrated.profiles.windows`和指定`terminal.integrated.defaultProfile.windows`,快速修复并优化终端配置,实现三分钟内恢复正常使用。

flower的专栏 743

Vue2 - 最新详细实现接入天地图详细配置流程及示例代码教程,提供获取用户当前定位的城市名称及省市区数据、精准经纬度信息、IP属地定位、地图搜索标点等示例,解决天地图跨域报错/页面白屏/定位不准问题

vue2,nuxt2,天地图,使用教程,vue接入国家天地图,定位api,ip属地定位,获取用户当前位置数据,省市区,地图不显示,白屏,报错,vue2如何使用天地图,地图选点,cors跨域,白名单设置了还是不行,vue项目调用天地图api实现定位,Vue2中使用天地图,详细教程,天地图申请密钥key教程,经纬度,经纬度不准确,一直定位北京,定位在北京不准怎么办,nuxt项目天地图,网站,网页,h5页面,地图显示不全,获取当前定位,如何使用天地图,拿到客户ip地址定位城市名称,距离计算,实时搜索地址逆解析,天

🏆 前端领域优质创作者 5328

单工通信、半双工通信和全双工通信的区别

单工通信、半双工通信和全双工通信的区别

m0_46378271的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

同步通信和异步通信

同步通信原理 同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。 采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,

u010783226的专栏 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVM--单向通信、双向通信、多向通信和通信管道

该小结主要记录了单向通信,双向通信,多向通信和通信管道的相关内容

创芯人--fly的博客 4090

I2C通信——I2C通信的理论介绍

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除 。

主要记录嵌入式学习与开发过程。 1万+

Day1通信基本概念 通信系统模型 通信系统分类与通信方式

一、基本概念 (1)消息 信息 信号 1)消息:通信系统传输的对象,形式多种。 1.连续消息:语音、温度、图像。 2.离散消息:数据、文字、符号 2)信号:消息的电表示形式/传输载体 1.模拟信号:信号参量取值连续(无穷多,不可数),模拟信号有时也称为连续信号,这里连续的含义是指信号载荷的消息的参量连续变化,在某一取值范围内可以取无穷多的值,而不一定在时间上也连续。 2.数字信号:信号参量取值离散...

MrBlake的博客 1万+

浅析同步通信与异步通信

1. 概述 1.1 同步通信原理 同步通信: 发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如:在时钟信号的上升沿的时候,将数据发送出去)发送数据,接收端根据发送端提供的时钟信号,以及大家的约定,接收数据。如:I2C、SPI等有时钟信号的协议,都属于这种通信方式。 IIC: SPI: 同步通信中双方使用频率一致的时钟,它的数据分组比异步则大得多,称为一个数据帧。通过独特的 bit 串作为启停标识。发送方要以固定的节奏去发送数据,而接收方要时刻做好接收数据的准备,识别到前导码(同步字

暖暖_的_纠结的博客 6344

【Linux】进程间通信——管道通信

管道通信是一种进程间通信方式,允许相关进程之间通过管道进行数据传输。管道本质上是一个的数据流,写入数据的一端称为写端,读取数据的一端称为读端。

2301_79969994的博客 2193

同步通信方式与异步通信方式

同步通信方式        以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符表示,硬件要求高,通信双方须严格同步。 同步通信格式:数据以“块”为单位,一个数据块包括同步字符、数据及校验字符CRC。 通信连线通常采用三线制: SDA(信号线)、SCL(时钟线)、GND(地线) 优点是数据传输速率较高,常用作串行系统总线(内总线),如I2C、SPI、USB等;缺点...

ichigoooo_wu的博客 2万+
上一篇: 通信总结之一
下一篇: 通信总结之三:XMPP
过客青
博客等级 码龄17年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值