资源简介
本程序使用的是 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内存大小调整
相关资源
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
- java软件工程师简历模板——应届生
- DES(CFB) JAVA
- java读取局域网共享机器文件
- [免费]java学习 存储过程
- pl/0词法分析器和语法分析器(java)
评论
共有 条评论