Reputation: 1251
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.
Upvotes: 1
Views: 99
Reputation: 4434
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();
Upvotes: 0
Reputation: 159774
The readLine
statement in your client program expects a corresponding String terminated with a newline \n
character to be send from the server.
Upvotes: 1