Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在while循环中从套接字读取数据_Java_Sockets_Loops_Inputstream - Fatal编程技术网

Java 在while循环中从套接字读取数据

Java 在while循环中从套接字读取数据,java,sockets,loops,inputstream,Java,Sockets,Loops,Inputstream,我想实现以下功能 while (true) { if client sends something process it else wait till something is send } 我尝试了以下方法,但没有成功,它只处理一件事,然后停止工作 有人能帮我吗? 我在这里找过这样的案子,但什么也没找到。如果有人能给出一个示例,说明如何在while循环中读取套接字,我将不胜感激 BufferedReader inFromClient = new BufferedR

我想实现以下功能

while (true)
{
if client sends something 
process it

else wait till something is send }
我尝试了以下方法,但没有成功,它只处理一件事,然后停止工作 有人能帮我吗? 我在这里找过这样的案子,但什么也没找到。如果有人能给出一个示例,说明如何在while循环中读取套接字,我将不胜感激

            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(client.getInputStream()));
            DataOutputStream outToclient =new DataOutputStream(client.getOutputStream());
            while (true){
                if ((request=inFromClient.readLine())!=null){


                        System.out.println("ser "+request);         
                        msg1= new msgs();
                        if(msg1.IsListReq(request))
                        {
                               System.out.println("Ser :List req");



                               for (int i = 0; i <listOfFiles.length ; i++) 
                               {

                                    if (listOfFiles[i].isFile()) 
                                     {

                                         files[i] = listOfFiles[i].getName();
                                     }

                               }

                                //prepare the respones
                                msg1.MakeFileListResponse (files);
                                outToclient.writeBytes(msg1.getMsg()+'\n');

                        } // end of processing List Request
                    } // end of first if statement
                 } end of while loop
BufferedReader infomclient=new BufferedReader(new InputStreamReader(client.getInputStream());
DataOutputStream outToclient=新的DataOutputStream(client.getOutputStream());
while(true){
if((request=inFromClient.readLine())!=null){
系统输出打印项次(“ser”+请求);
msg1=新的msgs();
if(msg1.IsListReq(请求))
{
System.out.println(“Ser:List req”);

对于(int i=0;i您应该有一个条件来中断while循环,否则它将永远循环,并且您的程序将崩溃。这可能是您遇到的问题。

现在,您有一个无限循环。这与“只要有输入可用就读取”不同,因为它将在输入不再可用后继续读取

试着这样做:

do
{
    request = inFromClient.readLine();
    if (request != null)
    {
        // do stuff.
    }
} while (request != null);

当输入流不再提供输入时,上面的示例将停止读取

有关java和套接字的信息,请查看。
您所描述的工作将驻留在服务器上。

请应用正确的格式!我不确定您的大括号在哪里。请将您的问题改写为。我们无法编译此内容。此外,请重新缩进以便我们可以阅读。很抱歉,我现在将编辑它,但我希望它运行,只要有来自服务器的输入。我不知道输入时是什么情况t将可用,或者它将可用多少次,所以我如何解决它?为此,您需要阅读java套接字教程。基本上,您将在套接字上侦听,并在收到消息时作出反应。您能给我一个此类教程的链接吗?我真的不知道在google上键入什么才能获得此教程。我已经完成了socket我以前没有用C编程,但我不知道如何用java编程