小豆子0722 2015-09-24 05:02 采纳率: 20%
浏览 4585

socket中while(true)的使用

本人初学java编程,在书中看到这个语句,这个是服务端接受语句的代码

 package dddd;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class MyTcp {
private BufferedReader reader;
private ServerSocket server1;
private ServerSocket server2;
private Socket socket1;
private Socket socket2;

void getserver1(){
    try{
        server1=new ServerSocket(7993);
        System.out.println("服务器套接字已经创建成功");
        while(true){
            System.out.println("等待客户机链接");
            socket1=server1.accept();
            reader=new BufferedReader(new InputStreamReader(socket1.getInputStream()));
            getClientMessage(socket1);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}
private void getClientMessage(Socket socket){
    try{
        while(true){
            System.out.println("来自客户机的信息:"+reader.readLine());
        }
    }catch(Exception e){
        e.printStackTrace();
    }
    try{
        if(reader!=null){
            reader.close();
            System.out.println("readerclose");
        }
        if(socket!=null){
            socket.close();
            System.out.println("socketclose");
        }
    }catch(IOException e){
        e.printStackTrace();
    }
}
public static void main(String[] args){
    MyTcp tcp=new MyTcp();
    tcp.getserver1();
}
}

这里面有两个while(true)都不太明白什么意思。按照我的理解在第二个语句

 while(true){
            System.out.println("来自客户机的信息:"+reader.readLine());
        }

里面,system应该不断输出这个消息啊,但是结果system只是输出了一段消息
图片说明
我从客户端输入一次服务端便响应一次,程序没问题,就是想知道为何while(true)没有出现死循环。

  • 写回答

4条回答 默认 最新

  • Chanwenmo 2015-09-24 05:31
    关注

    因为socket1=server1.accept(); 出现等待状态 。。 你可以debug看一下 他会一直在那地方不动,,,知道有数据传输 才会向下执行。。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!