• 大小: 1.43MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-27
  • 语言: Java
  • 标签: java  即时通讯  

资源简介

本程序使用的是 TCP 协议实现的即时通信软件,程序是基于 Java 语言开发的,主要用到的技术有:
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

评论

共有 条评论