简体   繁体   English

JAVA套接字编程无限循环

[英]JAVA Socket Programing infinite loop

This is my code for Socket Programming... 这是我的套接字编程代码。

import java.io.*;
import java.net.*;

public class EchoClient
{
    public static void main(String[] args)
    {
        try
        {
            Socket s = new Socket("127.0.0.1",9999);
            BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream()));
            PrintWriter w = new PrintWriter(s.getOutputStream(),true);
            BufferedReader con = new BufferedReader(new InputStreamReader(System.in));
            String line;

            do
            {
                line = r.readLine();

                if (line != null)
                {   System.out.println(line);   }

                line = con.readLine();
                w.println(line);
            }
            while(!line.trim().equals("bye"));
        }

        catch(Exception err)
        {   System.err.println(err);    }
    }
}

Code for Server: 服务器代码:

import java.io.*;
import java.net.*;

public class EchoServer
{
    public EchoServer(int portnum)
    {
        try
        {    server = new ServerSocket(portnum);    }

        catch(Exception err)
        {    System.out.println(err);   }
    }

    public void serve()
    {
        try
        {
            while(true)
            {
                Socket client;
                client = server.accept();

                BufferedReader r;
                r = new BufferedReader(new InputStreamReader(client.getInputStream()));

                PrintWriter w = new PrintWriter(client.getOutputStream(),true);
                w.println("Welcome to Java EchoServer. Type 'bye' to close.");

                String line;

                do
                {
                    line = r.readLine();

                    if (line != null)
                    {   w.println("Got: " + line);  }
                }
                while(!line.trim().equals("bye"));

                client.close();
            }
        }

        catch(Exception err)
        {   System.err.println(err);    }
    }

    public static void main(String[] args)
    {
        EchoServer s = new EchoServer(9999);
        s.serve();
    }

    private ServerSocket server;
}

The program keeps on taking input in an infinite loop and giving no response even when I type "bye". 该程序继续以无限循环的形式输入,即使我键入“ bye”也没有响应。 I think the main problem lies in Server.accept() that seems to be not working. 我认为主要问题在于Server.accept()似乎不起作用。 What might be wrong? 可能是什么问题?

Change client side code 更改客户端代码

line = r.readLine();

to

line = con.readLine();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM