I have written a small program in Socket Network in java which is communicating to server using IP address and port number. Now the data from the server will be received continuously. I want all this data received from server to be stored in a text file but have no idea how to do it without the application hanging.
Here is my code:
public class Client
{
public Client()
{
try
{
//ceating the socket to connect tso server running on same machine binded on port no 3000
Socket client=new Socket("localhost",3000);
System.out.println("Client connected ");
//getting the o/p stream of that connection
PrintStream out=new PrintStream(client.getOutputStream());
//sending the message to server
out.print("Hello from client\n");
out.flush();
//reading the response using input stream
BufferedReader in= new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println(in.readLine());
//closing the streams
in.close();
out.close();
}
catch(Exception err)
{
System.err.println("* err"+err);
}
}
public static void main(String a[])
{
new Client();
}
}
Thanks in advance.
I have a tested code.Try this one.
StringBuffer instr = new StringBuffer();
/** Establish a socket connetion with the server*/
Socket connection = new Socket(address, port);
/** Instantiate a BufferedOutputStream object */
BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());
/** Instantiate an OutputStreamWriter object with the optional character
* encoding. Sending some message to server
*/
OutputStreamWriter osw = new OutputStreamWriter(bos, "US-ASCII");
String process = "SAMPLE COMMAND SENT TO SERVER"+(char)13;
/** Write across the socket connection and flush the buffer */
osw.write(process);
osw.flush();
// NOW READING THE RESPONSE FROM THE SERVER
// I HAVE ADDED THE CHAR(13) as the delimiter here
/** Instantiate a BufferedInputStream object for reading
/** Instantiate a BufferedInputStream object for reading
* incoming socket streams.
*/
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
/**Instantiate an InputStreamReader with the optional
* character encoding.
*/
InputStreamReader isr = new InputStreamReader(bis, "US-ASCII");
/**Read the socket's InputStream and append to a StringBuffer */
int c;
while((c=isr.read())!=13)
instr.append((char)c);
/** Close the socket connection. */
connection.close();