当前位置: 首页 > news >正文

网络通信初体验

网络通信 - 我最开始的理解就是通过网络来进行数据通信。那什么是网络呢?最近通过学习一个即时聊天程序,让我对网络通信有了更深入一点的了解。
网络,就是计算机之间的各种协议,从最底层到最上层是:物理层-》数据链路层 -》网络层 -》传输层 -》应用层,每一次都有相应的协议来规范数据的组装方式和传输过程,整个这些就组成了网络。
在即时聊天程序里,主要用到了socket编程,如果把网络通信比作打电话,socket就是一部手机,你只需要输入对方的电话号码就可以和对方聊天,而如何实现聊天这个信息传输,这就是各种网络协议完成的。
我的Java基础比较薄弱,刚开始deepseek给我生成这个即时聊天程序的所有代码时,我看了半天也没弄明白他们到底是如何通讯的,为什么客户端有主线程和监听线程这两个线程,server主要负责哪些功能,server的handler主要用来干什么的,client, server,handler它们三个到底如何协调工作完成群发信息和私聊功能的。直到我按照deepseek给的建议,一步一步从最简单的socket代码开始写起,一点一点增加功能,到最后把所有的主要功能都实现了,我才豁然开朗。于是我画了下面的一个图来帮助我进一步加深对整个程序的理解


整个流程大致如下
1.启动ServerSocket(8889) 服务器, server.accept()阻塞在这里直到有Client 连接,每 accept 一个客户端,就创建一个新的 Handler 线程
2.Client01连接到server, new Socket(localhost, 8889), 此时server创建一个handler来处理与client的通信-接收客户端发来的信息(Inputstream),并返回数据给客户端(Outputstream)-根据数据类型,调用server的统筹方法,最终调用handler.sendMessage 发送数据给响应的客户端。
3.Client01的主线程通过System.in 读取用户输入的数据,通过 Socket.getOutputStream() 发送给 server 的对应 Handler,Handler 再通过 Server 的统筹方法转发, 同时起一个接收线程不断接收服务器发来的消息(in.readObject)
4. Client02, Client03… 连接到server, 与Client01一样的工作模式,且各个client通过server调度发送群消息或者私聊
(Server 负责管理clients和它们之间的通信,包含的功能包括新用户的增加,去除,广播消息,发送私信给相应的收件人)

也是通过一点一点自己写代码,遇到问题找AI帮忙,之前的哪些疑问才从我心中移去,这页印证了陆游的那句诗“纸上得来终觉浅,绝知此事要躬行”。看别人写的,那永远是别人的知识,只有自己亲身实践,验证并发现问题,这个过程才是自己知识积累的过程。
每一个领域都是一个大大的网络,里面包含各种细分知识,想要理解掌握一个领域的知识,只有一点一点积累,没有捷径。虽然AI可以给你提供答案,但是你自己没有知识储备不一定能看得懂答案。
知其然,知其所以然。借助AI工具,自己亲身去做,去思考,去反馈,去优化。计算机世界很大,我会一步一步进入计算机科学的大门,掌握计算机运行的相关知识。

http://www.cnnetsun.cn/news/1481826.html

相关文章:

  • 肠激酶残留ELISA检测试剂盒
  • 大型开合屋顶防水不行?”“多重密封,雨天也能安心使用
  • 【教程4>第12章>第1节】图像几何变换概述——图像的映射,缩放,插值,配准
  • 一点点了解数据通信,数据通信原理介绍(下)
  • Linux程序执行Shell命令并捕获输出的实现
  • 探索容积卡尔曼滤波:从理论到实践
  • 自动化周报生成:OpenClaw+nanobot聚合多平台工作痕迹
  • OpenClaw飞书机器人配置指南:Qwen3.5-9B实现对话式任务执行
  • 开发者的OpenClaw:用GLM-4.7-Flash构建CLI增强工具
  • OpenClaw代码审查助手:nanobot镜像分析GitHub提交记录
  • OpenClaw性能对比:nanobot镜像与官方Qwen3-4B的差异分析
  • 实战教程:快速高效下载Gofile文件的Python脚本完整指南
  • SEO_内容与SEO如何结合?提升排名的关键技巧
  • OpenClaw技能开发入门:为百川2-13B量化模型编写自定义模块
  • 轻量级任务调度框架cola_os设计与实现
  • (2024|TMLR|Meta,DINOv2,ViT,自蒸馏,iBOT,SwAV 中心化,判别式自监督预训练,分类/分割,分辨率调整)无监督稳健的视觉特征学习
  • 2026年苏州网站建设企业推荐:亿韵商务领衔,专业定制、高效
  • 嵌入式系统设计的核心编程思想与实践
  • OpenClaw自动化写作:Qwen3-32B-Chat生成SEO友好文章
  • Yuzu模拟器性能优化终极指南:告别卡顿的完整解决方案
  • 5步打造企业级跨平台流媒体服务:ZLMediaKit全场景部署指南
  • 想了解西安碑林、雁塔等区二手房装修口碑?这里有你要的答案!
  • 五肽-48——由精氨酸、谷氨酸、亮氨酸、丝氨酸和苏氨酸的抗衰肽
  • .NET 10 C# 14 New Features 新增功能介绍-Null 条件分配(Null-conditional assignment)
  • OpenClaw语音交互方案:Qwen3-32B接入手写笔记转文字任务
  • 这可能是“养龙虾”最安全的平台
  • AI画家助手:OpenClaw+GLM-4.7-Flash自动生成Midjourney提示词并管理作品
  • 效率向|小成本做大项目,VP+三易串口屏是秘密武器
  • 【ETestDEV5教程26】通信协议管理之动态属性
  • OpenClaw多模型切换:Qwen3.5-4B-Claude与本地Llama3混用方案