资源简介
本程序使用的是 TCP 协议实现的即时通信软件,程序是基于 Java 语言开发的,主要用到的技术有:
Socket 编程
自定义协议
如果使用普通的方法来标记一条消息的结束,如换行符,那么程序就不易扩展,只能发送纯文本消息,所以
需要自己定义一种消息的格式,并且我们还需要提供发送消息与解析消息的方法。
服务器端创建一个 ServerSocket,循环等待客户端的连接,每当有客户端连接,就获取到客户端的 Socket 对象,
并将该对象交付给一个服务器端线程处理,服务器端线程会不断从 Socket 的输入流中解析出消息类型、长度及消
息内容,然后根据类型执行不同的操作。 客户端与服务器建立连接,同时开启一个客户端线程接收服务器端发送的
消息,客户端登录是向服务器发送一条登录命令,客户端向服务器发送一条消息首先需要包装成定义的消息格式,
然后再发送给服务器。 不管是发送消息还是发送命令其实本质都是一条消息,向服务器发送的消息都必须按照定义
的格式来
Socket 编程
自定义协议
如果使用普通的方法来标记一条消息的结束,如换行符,那么程序就不易扩展,只能发送纯文本消息,所以
需要自己定义一种消息的格式,并且我们还需要提供发送消息与解析消息的方法。
服务器端创建一个 ServerSocket,循环等待客户端的连接,每当有客户端连接,就获取到客户端的 Socket 对象,
并将该对象交付给一个服务器端线程处理,服务器端线程会不断从 Socket 的输入流中解析出消息类型、长度及消
息内容,然后根据类型执行不同的操作。 客户端与服务器建立连接,同时开启一个客户端线程接收服务器端发送的
消息,客户端登录是向服务器发送一条登录命令,客户端向服务器发送一条消息首先需要包装成定义的消息格式,
然后再发送给服务器。 不管是发送消息还是发送命令其实本质都是一条消息,向服务器发送的消息都必须按照定义
的格式来
代码片段和文件信息
package client;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import myutil.Protocol;
/**
* 封装客户端与服务器通信的细节
*/
public class Client {
//套接字
Socket socket;
//输出流
DataOutputStream dos = null;
/**
* 连接服务器并初始化输出流
* 开启客户端线程负责消息的接收
* @param address 服务器IP地址
* @param port 服务器端口号
*/
public void conn(String address int port) {
try {
socket = new Socket(address port);
dos = new DataOutputStream(socket.getOutputStream());
new ClientThread(socket).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 登录
* @param user 用户昵称
*/
public void load(String user) {
Protocol.send(Protocol.TYPE_LOADuser.getBytes() dos);
}
/**
* 发送消息
* @param msg 消息内容
*/
public void sendMsg(String msg) {
Protocol.send(Protocol.TYPE_TEXT msg.getBytes() dos);
}
/**
* 退出
*/
public void logout(){
Protocol.send(Protocol.TYPE_LOGOUT “logout“.getBytes() dos);
}
/**
* 关闭客户端,释放掉资源
*/
public void close() {
// 向服务器发送退出命令
Protocol.send(Protocol.TYPE_LOGOUT new String(“logout“).getBytes() dos);
// 关闭资源
try {
if (dos != null)
dos.close();
if (socket != null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-30 18:26 chat\
文件 295 2018-06-29 20:01 chat\.classpath
文件 363 2018-06-29 20:01 chat\.project
目录 0 2018-10-30 18:26 chat\.settings\
文件 587 2018-06-29 20:01 chat\.settings\org.eclipse.jdt.core.prefs
目录 0 2018-10-30 18:26 chat\src\
目录 0 2018-10-30 18:26 chat\src\Server\
文件 665 2018-06-29 20:01 chat\src\Server\Server.java
文件 2597 2018-06-29 20:01 chat\src\Server\ServerThread.java
目录 0 2018-10-30 18:26 chat\src\client\
文件 1460 2018-06-29 20:01 chat\src\client\Client.java
文件 1461 2018-06-29 20:01 chat\src\client\ClientThread.java
文件 4691 2018-06-29 20:01 chat\src\client\View.java
目录 0 2018-10-30 18:26 chat\src\myutil\
文件 1361 2018-06-29 20:01 chat\src\myutil\Protocol.java
文件 755 2018-06-29 20:01 chat\src\myutil\Result.java
文件 11263 2018-06-29 20:01 client.jar
文件 5124 2018-06-29 20:01 server.jar
文件 1586640 2018-10-31 18:32 基于JAVA的即时通信软件.pdf
文件 33432 2018-06-29 20:01 程序说明文档.docx
- 上一篇:xutils-3.3 .36
- 下一篇:TOMCAT内存大小调整
相关资源
- 毕业生就业信息管理系统Java
- java jsp教师档案管理系统 源代码
-
android中Webview与ja
vasc ript的交互互 - JSP网页模板
- 网上书店管理系统java。SQL Server数据库
- java 宿舍管理系统.rar
- Java调用DLL源代码
- 纯JAVA坦克大战,可以做毕业设计
- javaEE学生选课系统文档+工程文件+数据
- 公交查询管理系统JAVA+sqlserver
- 《Java开发手册》泰山版.zip
- java+jsp毕业设计开发物流管理系统
- 基于JavaWeb的图书馆座位预约系统设计
- 用servlet做出来的Javaweb项目:图书管理
- JAVA+SQL 工资管理信息系统
- Javaweb应用图片文件上传并预览,数据
- 图书管理系统源程序+课程设计报告
- SSM框架开发的超市订单管理系统2019
- 仓库管理系统java课程设计
- javaweb超市进销系统
- 图书管理系统项目源码java版
- 拼图游戏 源码+所有文件
- 影院管理系统GUI界面
- 基于javaweb写的网上商城
- 京东商城网站式电子商城前端后台。
- java课程设计一个图形界面的小游戏
- JavaWeb新闻管理系统183842
- 基于java的SSM学生选课系统
- 基于JSP的校园交易平台
- JavaSE驾考系统,CS架构,无框架,适合
评论
共有 条评论