processsocket.java

来自「java socket编程」· Java 代码 · 共 66 行

JAVA
66
字号
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class ProcessSocket extends Thread {
	private Socket socket;
	public int workingState;

	public ProcessSocket() {
		this.socket = null;
		workingState = 0;
	}

	public void ini(Socket socket) {
		this.socket = socket;
		this.workingState = 1;
	}

	public int getWorkingState() {
		return this.workingState;
	}

	public ProcessSocket(Socket socket) {
		this.socket = socket;
	}

	public void run() {
		try {
			OutputStream os = socket.getOutputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			String header = br.readLine();
			String content = header;
			while (content.length() > 0) {
				System.out.println(content);
				content = br.readLine();
			}
			String[] splits = header.split(" ");
			String fileName = splits[1];
			File file = new File(Server.SERVERLOC + fileName);
			if (!file.exists()) {
				os.write(Server.FAILEDHEADER.getBytes());
				os.close();
				socket.close();
			} else {
				FileInputStream fi = new FileInputStream(file);
				byte[] buffer = new byte[1024];
				int length = fi.read(buffer);
				os.write(Server.SUCCESSHEADER.getBytes());
				while (length != -1) {
					os.write(buffer, 0, length);
					length = fi.read(buffer);
				}
				os.close();
				fi.close();
				socket.close();
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?