我正在尝试从服务器中取出一个随机数。我已经设置了随机数并将其转换为缓冲区读取器的字符串,但是仍然出现错误,有人可以看到我要去哪里了吗?

如果有人感兴趣,我已经在编写代码,现在可以正常工作了

更新的工作服务器代码

    import java.net.*;
    import java.io.*;
    import java.util.Random;


    public class server extends Thread
    {
        private ServerSocket serverSocket;


        public server(int port) throws IOException
        {
            serverSocket = new ServerSocket(port);
            serverSocket.setSoTimeout(10000);
        }


        public void run()
        {
            System.out.println("Starting game...");


            while(true)
            {

                System.out.println("Client connection established! Game started");
                try
                {


                    Socket server = serverSocket.accept();

                    Random rand = new Random();
                    int randInt = rand.nextInt(12);

                    DataOutputStream out = new DataOutputStream(server.getOutputStream());
                    out.writeUTF("Turning on button " + randInt);
                    DataInputStream in = new DataInputStream(server.getInputStream());
                    System.out.println(in.readUTF());
                    out.writeUTF("Acknowledged - Button 1 pressed");
                }// End try


                catch(SocketTimeoutException s)
                {
                    System.out.println("Socket timed out!");

                    break;
                }// End catch

                catch(IOException e)
                {
                    e.printStackTrace();

                    break;
                }// End catch
            }// End while()
        }// End run()

        /*The start of the main loop */
        public static void main(String [] args)
        {

            int port = 4444;
            try
            {
                Thread t = new server(port);

                t.start();

            }// End try

            catch(IOException e)
            {

                e.printStackTrace();
            }// End catch
        }// End main()
    }/


更新的工作客户代码

    import java.net.*;
    import java.io.*;
    import java.util.Random;

    public class client
    {
        public static void main(String [] args)
        {
            String serverName = "localhost";

            int port = 4444;
            try
            {
                Socket client = new Socket(serverName, port);


                Random rand = new Random();
                int randInt = rand.nextInt(12);
                OutputStream outToServer = client.getOutputStream();
                DataOutputStream out = new DataOutputStream(outToServer);
                out.writeUTF("Button " + randInt + " pressed");
                InputStream inFromServer = client.getInputStream();
                DataInputStream in = new DataInputStream(inFromServer);

            }// End client

            catch(IOException e)
            {
                e.printStackTrace();
            }// End catch
        }// End main
    }

最佳答案

读者返回字符串,而不是接受它们,因此在这方面它们是相关的。它们无法像您在这里一样工作;我建议您阅读文档,以便将来了解如何使用阅读器。

在任何情况下,都使用阅读器从某种流中读取文本。您已经有了文字,因此不需要阅读器。

在服务器中代码的末尾,添加outToClient.println(random);并完全删除BufferedReader

while(true)
{

    //listens for connection
    Socket connected = Server.accept();

    //prints clients adddress and port
    System.out.println( " THE CLIENT"+" "+ connected.getInetAddress() +":"+connected.getPort()+" IS CONNECTED ");

    Random rannum = new Random();
    int num = rannum.nextInt(12);

    String random = Integer.toString(num);

    System.out.println("Turning on Button " + num);

    PrintWriter outToClient = new PrintWriter(connected.getOutputStream(),true);
    outToClient.println(random);
}

09-17 12:17