資源簡介
用到了多線程的知識,首先輸入一個端口號開啟服務器,然后開啟客戶端,服務器端產生一對密鑰,服務器公鑰加密,客戶端私鑰解密。
接收消息有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\Msgob
?????文件?????????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個文件信息
- 上一篇:Android放大鏡實現
- 下一篇:EAN-13條形碼java程序
評論
共有 條評論