-
no one is helping me.....in the group I dont know why ?? pls help
hi,
I am writing the bytes onto the socket in the beloew fasion to avaoid
problem with byte stuffing with 0x7e and 0x7d
if u look at the code below. I have a byte array and a buffer buf.
the buffer has a length of 3.
i need to add 0x7e before and after the length of the buffer...
lets say if the buffer has 01 01 01 ..it should be sent as 0x7e 01 01 01
0x7e
so in the code below I am first writing 0x7e
then I am iterating over each element in the buffer and doing some
processing and wring the individual elements...
at the end os iteration I am writing the last 0x7e
hence on the socket I want the out put to be 0x7e 01 01 01 0x7e
but the problem is
first it is writing 0x7e just as 1 byte
and after that it is writing the rest of the 4 bytes 01 01 01 0x7e
thats a problem.....
as it is only when the server gets the info as 0x7e 01 01 01 0x7e it can
understand as a bind request but as it is getting data in two sections
i.e first 0x7e and after that the rest of the 4 bytes...
it is not able to interpret it to be as a bind request and rejecting the
transaction....
so what I am doing is I am loading the buffer value into a locally created
array list and then moving the values of the arraylist into another byte
array and then writing the byte array atonce onto the stream...
when I am printing the values from the arraylist it is printing correctly
similarly when I am printing values from the byte array b1 after moving the
values from the arraylist a1 then also it is printing the correct values..but
when I am writing the same byte array b1 on to the socket the server is getting
4 null values for 1st 4 byte and the last one correctly.....I think its bit
a confusing...but if U are able to follow something then just help me..otherwise
I will try by myself....
protected void writePDU(OutputStream os, PDUBuffer buf) throws IOException,
ProtocolException {
byte[] b = buf.getBytes();
byte[] b1 = new byte[5];
ArrayList a = new ArrayList();
Integer frameChar = new Integer(0x7e);
Integer escapeChar = new Integer(0x7d);
Integer xor7e = new Integer(0x5e);
Integer xor7d = new Integer(0x5d);
//os.write(0x7e);
a.add(frameChar);
for (int i = 0; i < buf.getLength(); i++) {
int txChar = b[i];
if (txChar == 0x7d) {
//os.write(0x7d);
a.add(escapeChar);
//os.write(0x5d);
a.add(xor7d);
} else if (txChar == 0x7e) {
//os.write(0x7d);
a.add(escapeChar);
//os.write(0x5e);
a.add(xor7e);
} else {
//os.write(txChar);
a.add(new Integer(txChar));
}
}
//os.write(0x7e);
a.add(frameChar);
for (int i=0; i < a.size(); i++) {
int k = ((Integer) a.get(i)).intValue();
//System.out.println(k);
b1 = new byte[a.size()];
b1[i] = (byte)k;
System.out.println(b1[i]);
if I am printing the values here i prints the write values for b1[i]
leys say like 126,1,1,1,126
//os.write(b1[i]);
}
but when writing onto the stearm it writes 00,00,00,00,126 ...
I have no idea why this is happening......
os.write(b1);
}
-
Re: no one is helping me.....in the group I dont know why ?? pls help
There really is little java discussion here (Devx). Everything seems to be
geared towards MS technology and most of those using the newsgroups here
are using that technology. There are a few of us others hanging out here.
I'm not sure really what you are doing. I try to avoid the byte level stuff
and only go there when I need to, like when I am talking to C programs.
Try asking your question at www.jguru.com or forums.java.sun.
Mark
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
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks