Socket网络编程进阶与实战
文章平均质量分 84
课程:https://coding.imooc.com/class/286.html
该专栏是我学习该课程的手记
passerbyYSQ
一个普通蒟蒻的成长之路
展开
-
Netty和WebSocket实现IM,讨论Channel和用户标识的双向绑定,离线消息和消息签收
问题引入相信很多人用过Netty写过聊天室的简单案例吧,可以说是模板代码了,没有结合业务。如果我们要做项目中的即时通讯模块(IM),需要将用户A发的消息转发给用户B,将会不可避免的遇到一个问题:如何快速找到用户B所建立的Channel (用户 -> Channel 的映射)?围绕我们的聊天业务,离线消息又如何进行推送?一个用户建立Channel之后,我们要想知道他有没有未签收的离线消息,就必定要知道用户标识。原则来讲,我们又如何避免一个用户重复创建Channel?换言之,在IM业务中,我们.原创 2021-02-14 00:34:21 · 5962 阅读 · 20 评论 -
Netty心跳机制的使用,以及源码刨析
一. 概念引入1. 心跳在TCP长连接中,客户端和服务端之间定期收发的一种特殊的数据包称为“心跳包”,用以通知和确认对方都还在线,以确保TCP连接的有效性2. 心跳的必要性客户端程序崩溃、或者网络断开等原因,单方面释放了TCP连接TCP连接被防火墙干掉计算机与计算机之间相互是有防火墙的,而这个防火墙随时可以做到一个策略,随时可以断开socket连接,而断开的时候可能不会进行四次挥手,服务端或者客户端没有收到连接断开的消息,此时会认为连接还可用,随时还想发送数据,发送的时候才知道连接不可原创 2021-01-25 00:54:00 · 405 阅读 · 1 评论 -
【Socket案例】原生java实现基于TCP的多人聊天室
效果图功能从项目代码结构来,代码主要分为简单的服务端和客户端。当运行服务端后,可运行多个客户端连接到服务端。某个客户端发送消息,都会经由服务端转发到除了自己的其他客户端。代码虽然不多,而且直接使用原生java手写,但是却很大程度接近聊天室的功能,这比网上很多关于Socket的入门案例都要有含金量。甚至你可以对应代码打包成jar包。如下图,并将server.jar放到云服务器上运行。那么其他人都可以通过cmd的方式运行client.jar来加入聊天室,并进行群聊天。体验.原创 2020-09-23 20:49:40 · 1078 阅读 · 2 评论 -
【Socket网络编程进阶与实战】【笔记】第九章总结
课程地址:https://coding.imooc.com/class/286.html由于在word文档整理的,懒得在csdn的文本编辑器搞格式了,索性转成长图贴上来记录一下。原创 2020-09-10 23:11:46 · 300 阅读 · 1 评论 -
【Socket网络编程进阶与实战】【手记】服务器传输优化 详解
前言已经回校了,但还没上课,就抓紧学习暑假被我搁置的课程【Socket网络编程进阶与实战】。今天下午,看完了第7章,有点难受,硬着头皮跟着老师敲代码,敲代码过程中是比较蒙的。敲完第7章后,晚上花了不少时间来理解第7章的代码。感觉理解了七八成吧,具体的架构和封装大概理解了,剩下还有一些代码的细节还没理解到位。在看下面之前,对Selector和Channel的关系有一点理解。可参看:https://www.jianshu.com/p/10717976c67c1、关键的类的介绍IoArg原创 2020-09-04 01:28:00 · 366 阅读 · 2 评论