首先我的需求是:在服务端提供文件的下载 ,现在服务端把文件夹里的所有文件读出来,再在把各个文件名写到socket对应的输出流中,再在客户端读出来,并打印在控制台。然后再提示客户输入数字选择他想要下载的文件。把数字写到socket对应的输出流,再在服务端读,但确读不出来那个数字??是为什么 ?
package socket;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class MyServer {
public static void main(String[] args) throws Exception {
ServerSocket ser=new ServerSocket(10000);
while(true){
Socket s=ser.accept();
System.out.println("服务器连接成功!");
Server st=new Server(s);
st.start();
}
}
}
class Server extends Thread{
private Socket s;
private int i=1;// 文件编号
public Server(Socket s){
this.s=s;
}
public void run(){
while(true){
try{
File file=new File("E:/tomcat/location/webapps/ROOT/test");
ArrayList<String> arr=new ArrayList<String>();
File []files=file.listFiles();
// 向客户端打印文件的列表 , 并把文件的名字存放到数组集合中
PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
for (File f : files) {
if(f.isFile()){
String name=f.getName();
arr.add(name);
pw.println(""+(i++)+" "+name);
pw.flush();
}
}
pw.close();
// 读取从Client输的数字
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
String number=br.readLine();
System.out.println(number);
if(number==null){
System.out.println(number);
break;
}
}
br.close();
}catch(Exception e){
}
}
}
}
------解决方案--------------------
哪行出问题了,没有报错?还是程序死在哪了?你没说清楚,