• 大小: 59KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: Java
  • 标签: java  Socket  聊天室  

资源简介

用到了多线程的知识,首先输入一个端口号开启服务器,然后开启客户端,服务器端产生一对密钥,服务器公钥加密,客户端私钥解密。 接收消息有qq头像闪动效果。

资源截图

代码片段和文件信息



import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Enumeration;

import com.rsa.RSACoder;
 
public class Client implements Runnable {
String ip;
int port;

DataOutputStream dos;
Socket client;

 

public Client(String ip int port) {
super();
this.ip = ip;
this.port = port;
}

public void init() {
try {
client = new Socket(ip port);

// pw=new PrintWriter(client.getOutputStream());

dos = new DataOutputStream(client.getOutputStream());

 
sayHello(“ALL“);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

new Thread(new Recieve_Runnable(client)).start();

}

// 发送上线请求 格式(目标地址:本机地址:消息类型:消息内容)
 

public void sayHello(String target) {
sendMessage(target MsgType.JOIN ““new Date().toLocaleString());
}


// 发送离线请求
public void sayBay(String target) {
sendMessage(target MsgType.LEFT ““new Date().toLocaleString());
}

// 向服务器发送消息  返回拼接好的字符串(加密前的明文)
public String sendMessage(String target String type String msgString date) {

System.out.println(“client:加密前:“ + msg);
String unencodeStr = target +MsgType.SPLIT+ ClientStart.nick_text.getText().toString() + MsgType.SPLIT + type + MsgType.SPLIT
+ msg+MsgType.SPLIT+date;
//加密msg类型的消息
if(MsgType.MSG.equals(type)){
//用公钥加密
;

try {
byte[] data = msg.getBytes();
byte[] encodedData = RSACoder.encryptByPublicKey(data ClientStart.publicKey);

// System.out.println(“encodedData:“+encodedData);
 
msg=Util.bytesToString(encodedData);
System.out.println(“client加密后:“+msg);


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

String str = target +MsgType.SPLIT+ ClientStart.nick_text.getText().toString() + MsgType.SPLIT + type + MsgType.SPLIT
+ msg+MsgType.SPLIT+date;
new Thread(new Send_Runnable(client str)).start();

return unencodeStr;
}

 

@Override
public void run() {
// TODO Auto-generated method stub
init();
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-06-19 14:01  Client\
     文件         232  2014-06-19 10:15  Client\.classpath
     文件         382  2014-06-17 09:39  Client\.project
     目录           0  2014-06-19 14:01  Client\.settings\
     文件         598  2014-06-18 09:26  Client\.settings\org.eclipse.jdt.core.prefs
     目录           0  2014-06-19 14:55  Client\bin\
     文件        3156  2014-06-19 15:02  Client\bin\Client.class
     文件        2107  2014-06-19 14:01  Client\bin\ClientStart$1.class
     文件        1714  2014-06-19 14:01  Client\bin\ClientStart$2.class
     文件        1655  2014-06-19 14:01  Client\bin\ClientStart$3.class
     文件        1607  2014-06-19 14:01  Client\bin\ClientStart$4.class
     文件         793  2014-06-19 14:01  Client\bin\ClientStart$5.class
     文件        4237  2014-06-19 14:01  Client\bin\ClientStart.class
     文件         793  2014-06-19 14:01  Client\bin\MainWindow$1.class
     文件        1260  2014-06-19 14:01  Client\bin\MainWindow$2.class
     文件         784  2014-06-19 14:01  Client\bin\MainWindow$3.class
     文件        2550  2014-06-19 14:01  Client\bin\MainWindow.class
     文件         342  2014-06-19 14:01  Client\bin\Msgobject.class
     文件         986  2014-06-19 14:01  Client\bin\MsgType.class
     文件        3574  2014-06-19 15:05  Client\bin\Recieve_Runnable.class
     文件         963  2014-06-19 14:01  Client\bin\Send_Runnable.class
     文件        1084  2014-06-19 14:01  Client\bin\Shake_Message_Runnable.class
     文件        1220  2014-06-19 15:01  Client\bin\Util.class
     目录           0  2014-06-19 14:01  Client\bin\com\
     目录           0  2014-06-19 14:01  Client\bin\com\rsa\
     文件        2137  2014-06-19 14:01  Client\bin\com\rsa\Coder.class
     文件        4973  2014-06-19 14:01  Client\bin\com\rsa\RSACoder.class
     目录           0  2014-06-19 14:01  Client\images\
     文件         667  2014-06-18 10:43  Client\images\blank.jpg
     文件         982  2014-06-18 10:43  Client\images\message.jpg
     目录           0  2014-06-19 14:55  Client\src\
............此处省略44个文件信息

评论

共有 条评论