黑马程序员技术交流社区

标题: Tcp问题 [打印本页]

作者: chen20134    时间: 2014-4-7 11:46
标题: Tcp问题
本帖最后由 chen20134 于 2014-4-7 16:41 编辑
  1. class TcpServer implements Runnable
  2. {
  3.         public void run(){
  4.                 ServerSocket ss=new ServerSocket(10005);
  5.                 Socket s=ss.accept();
  6.                 System.out.println(s.getLocalAddress()+"已连接");
  7.                
  8.                 InputStream in = s.getInputStream();  
  9.             FileOutputStream fos = new FileOutputStream("server.txt");  
  10.             byte[] buf = new byte[1024];  
  11.             int len = 0;  
  12.             while((len=in.read(buf))!=-1)  
  13.             {  
  14.                 fos.write(buf,0,len);  
  15.             }  
  16.             OutputStream out=s.getOutputStream(); //这句话报错
  17.             out.write("上传成功".getBytes());  
  18.             fos.close();  
  19.             s.close();   
  20.             ss.close();  
  21.         }
  22. }
复制代码
为什么 OutputStream out=s.getOutputStream(); 这句话报错:类型不匹配



作者: caijunsong    时间: 2014-4-7 12:17
  1. import java.io.*;
  2. import java.net.*;
  3. class TcpServer implements Runnable

  4. {
  5.      public void init()throws Exception
  6.         {
  7.          ServerSocket ss=new ServerSocket(10005);

  8.                 Socket s=ss.accept();

  9.                 System.out.println(s.getLocalAddress()+"已连接");

  10.                

  11.                 InputStream in = s.getInputStream();  

  12.             FileOutputStream fos = new FileOutputStream("server.txt");  

  13.             byte[] buf = new byte[1024];  

  14.             int len = 0;  

  15.             while((len=in.read(buf))!=-1)  

  16.             {  

  17.                 fos.write(buf,0,len);  

  18.             }  

  19.             OutputStream out=s.getOutputStream(); //这句话报错

  20.             out.write("上传成功".getBytes());  

  21.             fos.close();  

  22.             s.close();   

  23.             ss.close();  

  24.         }
  25.         public void run(){

  26.                try
  27.                {
  28.                                 init();
  29.                }
  30.                catch (Exception e)
  31.                {
  32.                                    e.printStackTrace();
  33.                }
  34.                           
  35.         }

  36. }
  37. //兄弟!!只要涉及到io或net 都是要处理它们抛出的异常的啊  反正你以处理异常的方法再查查API你就知道了
  38. //你里面用到了很多的流 都没有出来任何一个 它只显示一个  你稍微改动 就是一大片错误  我直接给你加了个init()用于执行
  39. //run的代码 然后直接把异常抛给了 调用者run  然后在run集中处理异常  我太懒了 不想一个个弄! 但是你应该能看懂
复制代码

作者: 为你而去    时间: 2014-4-7 19:40
因为你没有处理异常,抛异常或者Try Catch,但本例中你是覆盖run方法,父类run方法没有抛出异常,子类肯定也不能抛,所以你要在run方法中处理各异常,或者同一楼的的另起一个方法,抛出异常即可




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2