日期:2014-05-20 浏览次数:20936 次
import java.io.*;
import java.util.*;
import java.net.*;
public class receiveServer {
final int RECEIVE_PORT=9090;
public receiveServer() {
ServerSocket rServer=null;
Socket request=null;
Thread receiveThread=null;
try{
rServer=new ServerSocket(RECEIVE_PORT);
rServer.setSoTimeout(0);
while(true){
System.out.println("等待用户请求.");
request=rServer.accept();
System.out.println("接收客户机连接请求.");
receiveThread=new serverThread(request);
receiveThread.start();
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String args[]){
new receiveServer();
}
}
import java.net.*;
import java.io.*;
public class serverThread extends Thread {
Socket clientRequest;
InputStreamReader reader;
BufferedReader input;
InputStream inputStream = null;
PrintWriter output;
OutputStreamWriter writer;
OutputStream outputStream;
public serverThread(Socket s) {
this.clientRequest=s;
try{
outputStream = clientRequest.getOutputStream();
inputStream = clientRequest.getInputStream();
reader = new InputStreamReader(inputStream);
writer = new OutputStreamWriter(outputStream);
input = new BufferedReader(reader);
output = new PrintWriter(writer,true);
}catch(IOException e){
e.printStackTrace();
}
}
public void run(){
String command=null;
String str=null;
boolean done=false;
while(!done){
try{
str=input.readLine();
}catch(IOException e){
System.out.println(e.getMessage());
}
command=str.trim().toUpperCase();
if(str==null || command.equals("QUIT"))
done=true;
else if(command.equals("HELP")){
output.println("query");
output.println("quit");
output.println("help");
output.println("sendfile");
} else if(command.startsWith("QUERY")){
output.println("query");
}else if(command.startsWith("SENDFILE")){
output.println("READY\n");
output.flush();
try{
String savePath = "/home/hwcd/002.xls";
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(savePath)));
DataInputStream inputS = new DataInputStream(new BufferedInputStream(this.inputStream));
System.out.println("文件的长度为:" + inputS.readLong() + "\n");
System.out.println("开始接收文件!" + "\n");
DataOutputStream outputS = new DataOutputStream(this.outputStream);
byte[] buf=new byte[4096];
while(true){
int num=0;
num = inputS.read(buf); //客户端会一直停在这个地方。
System.out.println("num="+num+"\n");
if (num == -1) {
break;
}
fileOut.write(buf, 0, num);
}
System.out.println("接收完成:"+clientRequest.isClosed()+ "\n");
outputS.writeUTF("OK\n");
outputS.flush();
done=true;
fileOut.close();
}catch(Exception e){
e.printStackTrace();
done=true;
}
}else if(!command.startsWith("HELP") && !command.startsWith("SENDFILE") && !command.startsWith("QUIT") && !command.startsWith("QUERY")){
output.println("Command not Found!Please refer to the HELP!");
}
}
try{
clientRequest.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
command=null;
}
}