日期:2014-05-20  浏览次数:20838 次

在javase中的socket编程中,碰到的问题,在内容中具体描述
首先我的需求是:在服务端提供文件的下载 ,现在服务端把文件夹里的所有文件读出来,再在把各个文件名写到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){

}


}

}



}

------解决方案--------------------
哪行出问题了,没有报错?还是程序死在哪了?你没说清楚,