数据压缩与传输

FileServer:

import java.net.*;
import java.io.*;
import java.util.zip.GZIPOutputStream;

public class FileServer {
	int port = 2345; // 端口号
	ServerSocket serverSocket; // 服务器套接字

	public FileServer() {
		try {
			serverSocket = new ServerSocket(port); // 实例化套接字
			System.out.println("start server at port " + port); // 在命令窗口输出提示信息

			while (true) {
				Socket client = serverSocket.accept(); // 等待连接
				System.out.println("Connect: " + client.getInetAddress()); // 输出客户机地址
				DataOutputStream out = new DataOutputStream(client
						.getOutputStream()); // 得到输出流
				GZIPOutputStream gout = new GZIPOutputStream(out); // 压缩输出流
				FileInputStream fileIn = new FileInputStream("c:/1.txt"); // 待传送的文件

				byte[] buffer = new byte[1024]; // 缓冲区大小
				int length;
				while ((length = fileIn.read(buffer)) != -1) { // 读取数据
					gout.write(buffer, 0, length); // 写入数据到文件
				}
				gout.close(); // 关闭输出流
				fileIn.close();
				client.close(); // 关闭端口
				System.out.println("Send Success.");
			}
		} catch (IOException ex) {
			ex.printStackTrace(); // 输出错误信息
		}
	}

	public static void main(String[] args) {
		new FileServer();
	}
}

 

GetFile:

import java.net.*;
import java.io.*;
import java.util.zip.GZIPInputStream;

public class GetFile {
	int port = 2345; // 端口号
	String host = "localhost"; // 服务器地址
	Socket socket; // 客户端套接字

	public GetFile() {
		try {
			socket = new Socket(InetAddress.getByName(host), port); // 实例化套按字

			DataInputStream in = new DataInputStream(socket.getInputStream()); // 得到输入流
			GZIPInputStream gin = new GZIPInputStream(in); // 压缩输入流
			FileOutputStream fileOut = new FileOutputStream("e:/2.txt"); // 文件输出流

			byte[] buffer = new byte[1024]; // 缓冲区
			int length;
			while ((length = gin.read(buffer)) != -1) { // 读取数据
				fileOut.write(buffer, 0, length); // 写入数据到文件
			}
			System.out.println("Received Success!");
			gin.close(); // 关闭输入流
			socket.close(); // 关闭套接字
			fileOut.close(); // 关闭输出流
		} catch (IOException ex) {
			ex.printStackTrace(); // 输出错误信息
		}
	}

	public static void main(String[] args) {
		new GetFile();
	}
}

 

你可能感兴趣的:(java,C++,c,.net,socket)