本帖最后由 踩单车的幸福 于 2012-5-20 07:39 编辑
呵呵
第一个问题可以那么理解,这些都是底层操作。
第二个问题瞅了半天 测试了一下 终于发现了点眉头 不知道对不对 socket通信本身就是一种阻塞式的 我是这么认为的 就是当你客户端链接过来以后 服务器这边会首先使用read()来等待数据,当你不处理的时候,这儿就会有个问题,就是当明知道下一个字符返回空,它还是会进行next读取,这样就陷入了一个假死的状态,没办法向下运行,所以这儿应该加一个读取,简单处理一下就可以了。如果你想使用while()循环,最后还需要关流。
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(9090);
while(true){
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress()+".....connected");
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
//给客户端一个反馈信息。
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("客户端你好");
s.close();
ss.close();
}
}
|