import java.net.*;
import java.io.*;
public class Lesson10_1 { /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  if(args.length>0){
   server();
  }
  else{
   client();
  }
 }
 public static void server(){
  try{
   ServerSocket ss=new ServerSocket(6000);
   Socket sk=ss.accept();
   OutputStream ops=sk.getOutputStream();
   InputStream ips=sk.getInputStream();
   ops.write("Hello,Welcome you!".getBytes());
   byte [] buf=new byte[100];
   int len=ips.read(buf);
   System.out.println(new String(buf,0,len));
   ops.close();
   ips.close();
   sk.close();
   ss.close();
  }catch(Exception ex){
   ex.printStackTrace();
  } }
 public static void client(){
  try{
   Socket s=new Socket(InetAddress.getByName(null),6000);
   OutputStream ops=s.getOutputStream();
   InputStream ips=s.getInputStream();
   byte [] buf=new byte[100];
   int len=ips.read(buf);
   System.out.println(new String(buf,0,len));
   ops.write("Hello,This is zhangsan!".getBytes());
   ops.close();
   ips.close();
   s.close();
  }catch(Exception ex){
   ex.printStackTrace();
  } }
}
这是我编译的源程序,我在netbeans里编译的,运行结果如下:
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
compile-single:
run-main:
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:209)
        at Lesson10_1.client(Lesson10_1.java:49)
        at Lesson10_1.main(Lesson10_1.java:25)
不知道怎么解决,如果是配置问题,还望高手们,教教我。

解决方案 »

  1.   

    Socket s=new Socket(InetAddress.getByName(null),6000); 
    改为
    Socket s=new Socket(InetAddress.getByName("localhost"),6000); 
    试试
      

  2.   

    ..楼主你没开SERVER怎么可以让client 连接上去???
    你得再写一个类,再写一个main方法,调用client,先开server,再开client
      

  3.   

    服务器等待连接
    ServerSocket ss=new ServerSocket(6000); 
    Socket sk=ss.accept(); 
    ------------------------------------------
    Socket s=new Socket(InetAddress.getByName(null),6000); 
    客户端试图连接
    -------------------------------------------------------
    意见:注意下面两行错误提示,因为你代码没有行数,还有待你自己去检查,debug下吧        at Lesson10_1.client(Lesson10_1.java:49) 
            at Lesson10_1.main(Lesson10_1.java:25) 
      

  4.   

    好像不是这个问题,我已经试过。而且这个程序是孙鑫java视频教程里的程序,应该是正确的,我服务器开了也连接不上,实在太菜,不知道么办,希望有更详细的解答。谢谢大家!
      

  5.   

    谢谢你Asinzy!可能就是你所说的问题,我查了一下的确没有打开,但是问题还是解决不了,我找了很多资料和方法,如在防火墙中打开但不起作用,netstat -a -n的查询结果还是没有开启6000端口,不知道是什么问题了,还望能帮我解决。谢谢!
      

  6.   

    要开两个dos窗口,第一个dos窗口你用java Lesson10_1 aaa运行程序(aaa可以随便,只是用来表示有一个参数;第二个dos窗口你用java Lesson10_1运行程序。
      

  7.   

    你先确认你的服务器的监听有没有起来,
    public static void server(){ 
      try{ 
      ServerSocket ss=new ServerSocket(6000); 
      Socket sk=ss.accept(); 
      OutputStream ops=sk.getOutputStream(); 
      InputStream ips=sk.getInputStream(); 
      ops.write("Hello,Welcome you!".getBytes()); 
      byte [] buf=new byte[100]; 
      int len=ips.read(buf); 
      System.out.println(new String(buf,0,len)); 
      ops.close(); 
      ips.close(); 
      sk.close(); 
      ss.close(); 
      }catch(Exception ex){ 
      ex.printStackTrace(); 
      } 
    检查server方法到底有没有执行,可以用println()打印信息来看,或者你自己debug,很容易找到问题所在的