A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chen20134 中级黑马   /  2014-4-7 11:46  /  1016 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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(); 这句话报错:类型不匹配


2 个回复

正序浏览
因为你没有处理异常,抛异常或者Try Catch,但本例中你是覆盖run方法,父类run方法没有抛出异常,子类肯定也不能抛,所以你要在run方法中处理各异常,或者同一楼的的另起一个方法,抛出异常即可
回复 使用道具 举报
  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集中处理异常  我太懒了 不想一个个弄! 但是你应该能看懂
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马