Chat Room:基于JAVA Socket的聊天室设计

这篇博客详细介绍了如何使用JAVA Socket构建一个聊天室,包括客户端和服务器的建立、通讯协议设计、消息类型定义以及框架和UI设计。作者还分享了在实现过程中遇到的问题和解决方案,并提供了GitHub链接供读者参考。
摘要由CSDN通过智能技术生成

d0304 更新功能实现
d0312 更新部分图片&UI设计部分
d0318 更新功能实现
d1222 实现添加好友功能、实现注册功能、修改大量BUG
github:https://github.com/He11oLiu/ChatRoom.git

==========================================================

这里写图片描述

即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流。如QQ,微信都属于即时通讯。

本篇博客将详细记录我在JAVA上搭建一个自己的即时通讯工具的实现方法,如有错误的地方或者建议,请多多提出。

功能实现

基本技术

  • Socket 与 ServerSocket

    作为一个即时通讯工具,客户端(Client)和服务器(Server)是两个必不可少的部分。首先我们就来解决服务器和客户端连接的问题。

    Socket的英文原义是“孔”或“插座”。
    Socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
    在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。建立了一个Socket后,从这个Socket中读取I/O流,就可以实现两个程序的通讯。
    而服务器需要与多个客户端进行双向的通讯连接,并非单一的连接。于是可以通过每接收到一个Client后就开一个单独的进程,来完成与该Client的通讯步骤。这样就可以同时接受多个Client,从而实现服务器的功能。
    这里写图片描述

  • 客户端建立:
    Java提供了Socket类,用来建立客户端
    提供的构造方法如下:
    这里写图片描述
    当调用构造方法,构造一个新的Socket的时候,就是向指定的端口请求连接。
    通过以下方法,可以获取该Socket的I/O流
    这里写图片描述
    这里写图片描述
    通过close方法,关闭该Socket
    这里写图片描述

  • 服务器建立:

    Java提供了ServerSocket类,用来建立服务器。
    提供的构造方法如下:
    这里写图片描述
    可以通过Telnet来测试是否成功的建立了服务器。(win7后默认关闭,在控制面板-程序-启用或关闭windows功能下开启)

    telnet localhost <port>

    或者

    telnet 127.0.0.1 <port>

    该类下自带了
    这里写图片描述
    accept方法用来接收连接,返回一个Socket对象。接收该对象,并调用刚才提到的getInputStream()方法以及getOutputStream()方法,即可实现获取该Socket的I/O流。从该流上读取信息或者写入信息,即可达到通讯的目的。要注意的是,此时客户端的Input流对应着服务器端的Output流。
    同样ServerSocket也带了close方法,用来关闭服务器。
    这里写图片描述

  • 通讯协议设计
    这里写图片描述

通讯协议具体内容

</
type 描述
1.注册请求信息 0x01 客户发送注册请求数据给服务器 MsgReg
  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值