简体   繁体   中英

Client-Server Program does not work

I am novice in java. I wanted to make server-client socket programming. Here Client sends a message and Server replies the message. I have written following code :

Client.java

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

class Client 
{
    public static void main(String[] args) 
    {
        try
        {
            String host = "localhost";
            Socket socket = new Socket(host,25000);

            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Client";

            bufferedwriter.write(sendMessage);
            // bufferedwriter.flush();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from server is : "+ input);
            socket.close();


        }
        catch (Exception e) {
            e.printStackTrace();
        }



    }
}

Server.java

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

class Server 
{
    private static Socket socket;
    public static void main(String[] args) 
    {
        try 
        {
            ServerSocket serverSocket = new ServerSocket(25000);
            System.out.println("Server started listening at port 25000");
            socket = serverSocket.accept();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from client is : "+ input);


            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Server";

            bufferedwriter.write(sendMessage);
            bufferedwriter.flush();


            socket.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

The output of the program looks like this:

roomno311@thedestiny:~/Desktop/java$ java Server Server started listening at port 25000 roomno311@thedestiny:~/Desktop/java$ java Client

The above code hangs in between. I need to press Ctrl + C to close these programs. Please help me to solve this.

客户端程序中的readLine语句期望从服务器发送以换行符\\n终止的相应字符串。

Since you are using a BufferedWriter you can also use the newLine method like this.

In your client, after: String sendMessage = "hello from Client";

use:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

And similarly in your server code after: String sendMessage = "hello from Server";

user:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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