package test;import java.net.*;
import java.io.*;public class TCPServer {    public static void main(String[] args) throws Exception {
        ServerSocket ss = new ServerSocket(6666);
        Socket s = ss.accept();
        System.out.println("a client connect!");
    }
}
这是服务器的
package test;import java.io.*;
import java.net.*;public class TCPClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1",6666);
}
}
这是客户端的
为什么运行出先
run:
Exception in thread "main" java.net.SocketException: select failed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at test.TCPServer.main(TCPServer.java:10)
Java Result: 1
成功生成(总时间:3 秒)用的是netbeanIDE工具写的

解决方案 »

  1.   

    你是不是已经开了一个server了
      

  2.   

    原因在于 Java现在对 IPv6 的支持很不好
    卸载IPv6就好了。 
    在本地连接的“属性”中卸载。
      

  3.   

    别把serversocket的accept()方法放到主线程中,这样会造成阻塞的,试试用一个线程去执行看看。
      

  4.   

    从你的错误堆栈信息可以看到错误发生在at java.net.PlainSocketImpl.socketAccept(Native Method)方法中那么看了下源码发现是这样一个方法
    private native void socketAccept(SocketImpl s)恩 我很想帮你  但是本地方法java好像根本就不开放源码 所以我也不知道里面到底是怎么写的了
      

  5.   

    必须先启动server、
    然后启动client、
    看了lz的程序、应该没问题呀、、
      

  6.   

    为在eclipse中试过了、
    没问题、
    是不是你ip写错了?
      

  7.   

    我的操作系统是Windows7 32Bit 旗舰版,先贴一下我在Eclipse下测试通过的代码:
    /**Server*/
    package test;import java.net.*;
    import java.io.*;public class TCPServer {
    public static void main(String[] args) throws Exception {
    ServerSocket ss = new ServerSocket(6666);
    Socket s = ss.accept();
    System.out.println("a client connect!");
    }
    }
    /**Client*/
    package test;import java.net.*;
    import java.io.*;public class TCPClient {
    public static void main(String[] args) {
    try {
    Socket s = new Socket("127.0.0.1", 6666);
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    代码在Win7下测试通过,未出现问题。我的代码仅仅是比楼主多了错误处理而已。在DOS下运行时,现运行服务器端,命令:java test.TCPServer 然后运行客户端: java test.TCPClient 运行后,服务器端显示“a client connect”.请楼主添加捕获错误的代码,再测试下。
    希望能够帮到楼主.
      

  8.   

    上楼的代码试过了.也不行啊.郁闷啊
    但是我装了个虚拟机xp系统的.将代码那去测试.正常输出.
    但是拿来win7测试.又不行的.我觉得是ipv6的问题.但是不能卸载,不打扣也不能运行!!郁闷!
    是不是我的系统问题呢?
      

  9.   

    哦,这个问题还真奇怪,看来应该是跟楼主的Win7系统设置相关了。楼主的IPv6默认是开启的吗?
      

  10.   

    ipv6启动的了.但是没有网络访问.
    应该没有关系吧
      

  11.   

    public class TCPServer {
    public static void main(String[] args) throws Exception {
    ServerSocket ss = new ServerSocket(6666);
    Socket s = ss.accept();
    System.out.println("a client connect!");
    }
    }
    /**Client*/
    package test;import java.net.*;
    import java.io.*;public class TCPClient {
    public static void main(String[] args) {
    try {
    Socket s = new Socket("127.0.0.1", 6666);
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }