Java多线程客户端/服务器与发送/接收

时间:2015-12-28 12:02:05

标签: java multithreading server client

我想创建一个偶尔向服务器发送字符串的客户端,例如:当应用程序关闭时,它会向服务器发送一条消息 - sendToServer("Client[" + IP + "]Closed")

我的代码中存在问题:

服务器:

try{
            int port = 25000;
            ServerSocket serverSocket = new ServerSocket(port);
            System.out.println("Server Started and listening to the port 25000");

            //Server is running always. This is done using this while(true) loop
            while(true)
            {
                //Reading the message from the client
                socket = serverSocket.accept();
                InputStream is = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String received = br.readLine();
                System.out.println("Message received from client is "+received);

                //Multiplying the number by 2 and forming the return message
                String returnMessage;
                try
                {
                    returnMessage = "You send : " +  received;
                }
                catch(NumberFormatException e)
                {
                    //Input was not a number. Sending proper message back to client.
                    returnMessage = "Please send a proper number\n";
                }

                //Sending the response back to the client.
                OutputStream os = socket.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os);
                BufferedWriter bw = new BufferedWriter(osw);
                bw.write(returnMessage);
                System.out.println("Message sent to the client is "+returnMessage);
                bw.flush();
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                socket.close();
            }
            catch(Exception e){
     }
}

客户:

try {
    String host = IP;
    int port = Port;
    InetAddress address = InetAddress.getByName(host);
    socket = new Socket(address, port);

    //Send the message to the server
    OutputStream os = socket.getOutputStream();
    OutputStreamWriter osw = new OutputStreamWriter(os);
    BufferedWriter bw = new BufferedWriter(osw);

    String number = "2";

    String sendMessage = number + "\n";
    bw.write(sendMessage);
    bw.flush();
    System.out.println("Message sent to the server : "+sendMessage);

    //Get the return message from the server
    InputStream is = socket.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String message = br.readLine();
    System.out.println("Message received from the server : " +message);
}
catch (Exception exception)
{
    exception.printStackTrace();
}
finally
{
    //Closing the socket
    try
    {
        socket.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

0 个答案:

没有答案