wood burning stoves 2.0*
The moose likes Sockets and Internet Protocols and the fly likes Transforming a non blocking InputStream to a blocking one Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Sockets and Internet Protocols
Bookmark "Transforming a non blocking InputStream to a blocking one" Watch "Transforming a non blocking InputStream to a blocking one" New topic
Author

Transforming a non blocking InputStream to a blocking one

ismail hassani
Greenhorn

Joined: Feb 20, 2006
Posts: 9
I have a problem to getting a full response when i made a connection with a socket to a jboss service,because the jboss generates a message1 then after a while generates a message 2,the method readBuffer reads in run mode only the message1 and don't wait for the server to send the message2,but in the debug mode readBuffer reads both message1 and message2.

How can i make my method readBuffer waits for the jboss service to send both message1 and message2 in other words how can i transform the non blocking InputStream is in a blocking one ?


import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;


............

private Socket s;
private InputStream is;
private OutputStream os;


s = new Socket(host, port);

is = s.getInputStream();


//methode to read from the jboss service.
public readBuffer(byte[] buf)
{

try
{

int size = is.read(buf)
}

catch(Exception e)
{..

}



}


Thank you

Ismail

[ November 28, 2008: Message edited by: ismail hassani ]

[ November 28, 2008: Message edited by: ismail hassani ]

[ November 28, 2008: Message edited by: ismail hassani ]
[ November 28, 2008: Message edited by: ismail hassani ]
Nitesh Kant
Bartender

Joined: Feb 25, 2007
Posts: 1638

Are you reading raw socket data? If yes, is there any protocol you are following?
How, do you determine when message1 is finished or infact any message has finished?
Can you provide us the existing readBuffer() code?
ismail the method readBuffer reads in run mode only the message1 and don't wait for the server to send the message2,but in the debug mode readBuffer reads both message1 and message2.

How does your client change between "run mode" and "debug mode"?
ismail how can i transform the non blocking InputStream is in a blocking one ?

Does it really matter over here whether it is blocking or non-blocking?
Your reader needs to determine that whether it has read message 1 & 2 both or not. How does it matter whether the read is blocking or non-blocking?

P.S.: Please UseCodeTags while posting code.
[ December 01, 2008: Message edited by: Nitesh Kant ]

apigee, a better way to API!
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Transforming a non blocking InputStream to a blocking one