通信总结之二

串行通信——异步串行通信 目录 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万+

对接萤石平台调用播放

萤石api 管理 · 萤石开放平台API文档 httpclient pom <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> package com.ruoyi...

u011799016的博客 1773

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

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

Rocherrr的博客 3万+

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1684

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

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

sym_robot的博客 3万+

vins-fusion环境配置、安装与测试

本文主要介绍如何搭建vins-fusion的运行环境,以及解决vins-fusion编译运行时遇到的环境冲突问题,并在此基础上实现例程的运行。

qq_52068373的博客 1万+

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

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

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

2301_77178750的博客 6714

Rocky Linux 9.0国内yum源一键替换指南(上海交大镜像站实测)

本文详细介绍了如何将Rocky Linux 9.0的yum源替换为上海交大镜像站,以解决国内用户访问官方源速度慢的问题。通过实测验证,上海交大镜像站提供高速下载和稳定更新,并提供了完整的替换步骤、常见问题解决方案及高级优化配置,帮助用户提升软件包下载效率。

weixin_29304985的博客 362

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

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

昂辉科技的博客 7623

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2892

Virbox Protector:全方位守护 Android 应用安全

在数字化浪潮中,Android 应用面临着诸多安全挑战,如破解、篡改、盗版、数据窃取和钓鱼欺诈等。为了应对这些复杂的安全问题,Virbox Protector 应运而生,为 Android 应用提供高强度的专业化安全保护,支持对 APK 和 AAB 文件的加固保护,并兼容 Google Play,助力应用顺利出海。

VBP_2025的博客 997

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

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

m0_46378271的博客 1万+

24、企业治理、风险与合规:精益思维的应用与实践

本文探讨了如何运用精益思维优化企业治理、风险与合规(GRC)流程,分析了职责分离与合规流程的误区,提出了预防性与检测性控制措施的合理搭配,并通过价值流映射、减少合规反馈循环等方法实现流程优化。以Etsy的PCI-DSS实施为例,展示了如何在满足法规要求的同时保持创新活力。文章还强调了构建协作型GRC文化的重要性,并展望了未来GRC的发展趋势,包括数字化转型、全球化风险管理及与可持续发展的结合。

solidity8miner的博客 104

同步通信和异步通信

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

u010783226的专栏 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

创芯人--fly的博客 4090

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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、付费专栏及课程。

余额充值