当前位置:编程学习 > JAVA >>

初学socket的问题

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工具写的
--------------------编程问答-------------------- 你是不是已经开了一个server了 --------------------编程问答-------------------- 没有.用360看了没有占用端口的
--------------------编程问答-------------------- 先启动server后启动client --------------------编程问答-------------------- 原因在于 Java现在对 IPv6 的支持很不好
卸载IPv6就好了。 
在本地连接的“属性”中卸载。 --------------------编程问答-------------------- 没问题的呢,你换个端口试试。。。 --------------------编程问答-------------------- 都试过了.还不行呢.是不是系统问题啊
--------------------编程问答-------------------- 到xp上跑下试试。 --------------------编程问答-------------------- 别把serversocket的accept()方法放到主线程中,这样会造成阻塞的,试试用一个线程去执行看看。 --------------------编程问答-------------------- 从你的错误堆栈信息可以看到

错误发生在at java.net.PlainSocketImpl.socketAccept(Native Method)方法中

那么看了下源码发现是这样一个方法
private native void socketAccept(SocketImpl s)

恩 我很想帮你  但是本地方法java好像根本就不开放源码 所以我也不知道里面到底是怎么写的了 --------------------编程问答-------------------- 正在学习中,帮顶了 --------------------编程问答--------------------
引用 2 楼 yang544164 的回复:
没有.用360看了没有占用端口的
360 V5啊 --------------------编程问答-------------------- 必须先启动server、
然后启动client、
看了lz的程序、应该没问题呀、、 --------------------编程问答-------------------- 为在eclipse中试过了、
没问题、
是不是你ip写错了?
--------------------编程问答-------------------- 客户端和服务器端的代码都没错,楼主贴一下你的测试代码 看看 。。。 --------------------编程问答-------------------- 我试过了,能行的。 --------------------编程问答-------------------- 谁在win7上能运行的 --------------------编程问答-------------------- 代码应该没问题的,不过最好写个线程,要不着这程序只能是个原料 --------------------编程问答-------------------- 我的操作系统是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”.请楼主添加捕获错误的代码,再测试下。
希望能够帮到楼主.
--------------------编程问答-------------------- 上楼的代码试过了.也不行啊.郁闷啊


但是我装了个虚拟机xp系统的.将代码那去测试.正常输出.
但是拿来win7测试.又不行的.我觉得是ipv6的问题.但是不能卸载,不打扣也不能运行!!郁闷!
是不是我的系统问题呢? --------------------编程问答-------------------- 哦,这个问题还真奇怪,看来应该是跟楼主的Win7系统设置相关了。楼主的IPv6默认是开启的吗? --------------------编程问答-------------------- 阅
顶贴 --------------------编程问答-------------------- ipv6启动的了.但是没有网络访问.
应该没有关系吧
--------------------编程问答-------------------- 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();
}
}
}
--------------------编程问答-------------------- 我也是这样的
前一阵还好好的
郁闷
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,