package socket;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class Client {

public static void main(String args[]) throws Exception, IOException{
Socket s=new Socket("localhost",10000);
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw=new PrintWriter(new OutputStreamWriter(s. getOutputStream()));
BufferedReader jianpan=new BufferedReader(new InputStreamReader(System.in));
 
while(true){
String name=br.readLine();
if(name==null){
break;
}
System.out.println(name);
}
br.close();
System.out.println("请输入您要下载的文件编号:");
 
String number=jianpan.readLine();
pw.println(number);
pw.flush();
jianpan.close();
pw.close();
System.out.println(number);
while(true){

}

 }}

解决方案 »

  1.   

    才一个代码的的:注释那里    从client读数字,读不到为什么?
      

  2.   

     也就是在服务端中的如果写: pw.close()(58行)导致了Socket关闭(报socket isclosed关闭异常);但如果不关闭(即不写pw.close()),那么,在客户端的br.readLine()(21行)读完pw写的数据后就会一直阻塞.......
      

  3.   

    你写的是while(true),肯定停不住啊,把条件改为while(( String s=pw.readline())!=null)
      

  4.   

     知道了,我以为跟以前读文件一样,成功了没?搞定了 写个个标记,读的时候判断标记。昨天才知道写socket的时候不能乱关流,一但关了socket也就关了