|
-
April 22nd, 2008, 02:34 PM
#1
Write to stream doesn´t work? Strange.
It´s me again. I hope noone minds my flood of questions.
This time it´s actually (or should be) rather simple. Only it it is not.
I am still on the client-server program. Here is a part from the server side code:
Code:
else if( m_bVidActive ) {
m_oOStream.writeUTF("666:msg");
m_oOStream.writeUTF("Sending video");
m_oOStream.writeUTF("666:vid");
while( m_bVidActive ) {
while (m_oImage == null) {
m_oImage = m_oImgProc.getImage();
}
if( m_oImgIcon == null )
m_oImgIcon = new ImageIcon(m_oImage);
m_oOStream.writeUTF("666:1");
String str = m_oIStream.readUTF();
while( !str.equals("666:Go") )
str = m_oIStream.readUTF();
m_oObjOutStream.writeObject(m_oImgIcon);
m_oImgIcon = null;
m_oImage = null;
m_oObjOutStream.reset(); //this prevents memory leak
}
m_oOStream.writeUTF("666:0");
}
And this is the respective client side code:
Code:
else if( str.equals("666:vid")) {
m_bVidActive = true;
while( m_bVidActive ) {
str = m_oIStream.readUTF();
if( str.equals("666:1") ) {
m_oOStream.writeUTF("666:Go");
ImageIcon icon = (ImageIcon) m_oObjInStream.readObject();
m_oImgProc.setImage(icon);
m_oWorker.imageAvailable();
}
else if( str.equals("666:0") ) {
m_bVidActive = false;
}
}
}
What it does is simply transmitting images from server to client.
I still have trouble with stopping the transmission, cause as soon as, for example, the server stops and sends a message that the transmission is over, the client receives a malformed input error (obviously reading the messag via ObjectInputStream instead of datainputstream).
Anyway, the point is, that I inserted a message queue that makes the server send a message (666:1) when he´s ready to send a picture. Then he waits for the answer from the client that he is ready to receive it (666:Go). I thought it should work. Maybe there´s an easier way, but I don´t know it. The problem, though, is the message from the client (666:Go). The server simply doesn´t react to it and deadlocks in the readUTF funktion.
I know there is this thing called blocking. Maybe it´s about that. But why does it not happen with the other messages?
And as long as I am at it, is there a way to ask a Stream if it has data waiting before actually using a read-method? Cause as soon as I am in it it´s too late if there never comes a message (or the wrong kind of message). I cannot get out of that funktion then anymore.
Cheers (and thanks again)
Oceansoul
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|