wood burning stoves 2.0*
The moose likes I/O and Streams and the fly likes UTFDataFormatException Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » I/O and Streams
Bookmark "UTFDataFormatException" Watch "UTFDataFormatException" New topic
Author

UTFDataFormatException

mupparaju srinivasa rao
Greenhorn

Joined: Apr 16, 2004
Posts: 9
Hi,

There are two applications.The communication between the two application is through socket.
The code that is writing on the socket is as follows:

public boolean sendAlarmWithSize(int size_, String alarm_) throws Exception
{
_dataOutputStream.writeShort(size_);
_dataOutputStream.writeUTF(alarm_);
return true;
}
After writing on the socket i put the print statement in writeShort method of API.It is printing the size_ correct.

At the receiving end for reading from the socket the following code is used:

private Payload readMessages(InputStream in)
throws IOException, java.text.ParseException, InvalidMessageFormat {
PropertyList prop = new PropertyList();
String propertyStr, contentType = null, action = null;
Object obj;
DataInputStream dataStream = new DataInputStream(in);
int numAlarms = dataStream.readShort();
CircuitMessage[] circuitAlarms = new CircuitMessage[numAlarms];
for (int i = 0; i < numAlarms; i++) {
propertyStr = dataStream.readUTF();
if (Logger.DEBUG && myDebug != null) {
myDebug.out(5,"Message Received - " + propertyStr);
}
obj = prop.objectFrom(propertyStr);
if (obj instanceof java.util.Hashtable) {
java.util.Hashtable hash = (java.util.Hashtable)obj;
contentType = (String) hash.get("<content-type>");
action = (String) hash.get("<action-type>");
obj = mssgFactory.digest(hash);
if (obj instanceof CircuitMessage) {
circuitAlarms[i] = (CircuitMessage) obj;
}
} else {
// skip this message because I don't recognize it.
System.out.println(obj);
}
}
Payload payload = new Payload();
payload.payload = circuitAlarms;
payload.contentType = contentType;
payload.action = action;
return payload;
}

In the above code after reading from the stream using readShort() the value is different than the one we wrote on the stream.At the same time readUTF() is throwing UTFDataformat exception. I hope some one can help me .

Thanks in advance,

MSR
Joe Ess
Bartender

Joined: Oct 29, 2001
Posts: 8915
    
    8

I think the problem is the same as it was six months ago. There is something fundamentally wrong with this code (pseudocode follows):


"blabbing like a narcissistic fool with a superiority complex" ~ N.A.
[How To Ask Questions On JavaRanch]
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: UTFDataFormatException