黑马程序员技术交流社区

标题: Tcp服务端的问题,一运行就抛异常。 [打印本页]

作者: 刘策    时间: 2013-3-29 21:31
标题: Tcp服务端的问题,一运行就抛异常。
本帖最后由 刘策 于 2013-3-30 13:13 编辑

  1. <p> </p>
复制代码
package day13;
import java.io.*;
import java.net.*;
class Demo{
public static void main(String[] args) throws Exception{
  ServerSocket ss = new ServerSocket(10086);
  Socket s = ss.accept();
new Thread(new Rece(s)).start();
  new Thread(new Test(s)).start();
  s.close();
  ss.close();
}
}
class Rece implements Runnable{
private Socket s;
  
Rece(Socket s){
  this.s = s;
}
public void run(){
  try{
   System.out.println("haha");
   String ip = s.getInetAddress().getHostAddress();
     BufferedReader bufin =
     new BufferedReader(new InputStreamReader( s.getInputStream()));
  System.out.println(ip+"..........connected");
  //byte[] buf = new byte[1024];
  //int len = 0;
  String data = null;
  while((data=bufin.readLine()) !=null){
   System.out.println(data);
  }
  }
  catch(Exception e){
   throw new RuntimeException("YYYYYNNNNNOOOO" );
  }
}
}
class Test implements Runnable{
private Socket s;
Test(Socket s){
  this.s = s;  
}
public void run(){
  try{
    String ip = s.getInetAddress().getHostAddress();
    BufferedReader bufr =
   new BufferedReader(new InputStreamReader(System.in));
   PrintWriter pw = new PrintWriter(s.getOutputStream());
   String str = null;
    while((str=bufr.readLine()) !=null)
  {
   System.out.println("我:"+str);
   if("886".equals(str))
    break;
   pw.println(str);
   System.out.println("数据已经发出");
  }
  bufr.close();
  s.close();
  }
  catch(Exception e){
   throw new RuntimeException("NoNONON" );
  }
}
}
写的不怎么好,希望能帮忙找一下原因。谢谢呀!

作者: lucy198921    时间: 2013-3-29 22:08



表面上看是类的名称错误,其实更有可能是classpath环境变量没有配置好。
建议复查类的名称包括大小写,如果有包的情况下,注意类文件放的位置。

环境变量classpath配置中有没有小数点“.”,有没有java默认类库的位置,有没有你自己的类文件顶层目录等。



作者: 李海鹏    时间: 2013-3-30 12:33
1.可能你的端口号被占用了,2.在Rece类里流没有关闭
作者: 刘策    时间: 2013-3-30 13:05
PrintWriter中的构造函数没有加入true,我就找到了这一个问题,可是还是不行呀,我又分别进行了一下try说明我的输入流有问题,可是我看着好呢呀,为什么呀,我的想法是这样的,Rece类是用来接受客户端发来的数据 ,而Test则是用来键盘录入将数据发送过去,可是一运行就挂,伤心。。。。。。
作者: 刘策    时间: 2013-3-30 13:10
李海鹏 发表于 2013-3-30 12:33
1.可能你的端口号被占用了,2.在Rece类里流没有关闭

好的,谢谢你,我找到了原因,是因为端口被占用了,呵呵,可能 是昨天用这个号用得太多了吧,哈哈,




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