1.可以傳輸一個(gè)Object 爆雹,不過(guò)肯定要序列化性穿,所以實(shí)現(xiàn)java.io.Serializable接口就是必不可少的勺三。
is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); os = new ObjectOutputStream(socket.getOutputStream()); Object obj = is.readObject(); User user = (User)obj; os.writeObject(user); os.flush();
2.傳輸壓縮對(duì)象節(jié)省流量。
gzipis = new GZIPInputStream(socket.getInputStream()); ois = new ObjectInputStream(gzipis); gzipos = new GZIPOutputStream(socket.getOutputStream()); oos = new ObjectOutputStream(gzipos);
3.剩下的就是加密了(SSL)
` ServerSocketFactory factory = SSLServerSocketFactory.getDefault();
ServerSocket server = factory.createServerSocket(5000);
SocketFactory factory = SSLSocketFactory.getDefault();
socket = factory.createSocket("localhost", 5000); `
產(chǎn)生keystore文件了需曾,運(yùn)行下面的命令:
keytool -genkey -alias mysocket -keyalg RSA -keystore e:\testsocket.jks
運(yùn)行Server:
java -Djavax.net.ssl.keyStore=testsocket.jks -Djavax.net.ssl.keyStorePassword=testsocket com.liuyi.socket.test.socket.ssl.MyServer
運(yùn)行Client:
java -Djavax.net.ssl.trustStore=testsocket.jks -Djavax.net.ssl.trustStorePassword=testsocket com.liuyi.socket.test.socket.ssl.MyClient
對(duì)于SSL生成部分可以參考:
http://www.cnblogs.com/draem0507/archive/2013/05/08/3067252.html