SBJ
SBJ

Reputation: 4139

Read and Write Bytes data packet via socket

I want to connect Android Device to external device via Socket. Socket Connect to external device successfully.

Now if any data require from external device then send request of byte packet data to socket below order. if external device receive data correct then send byte data in response.

Parameters : methodname(1 byte), payloadlength(2 byte), payload(2 byte).

Now My Code is...

         Socket socket = new Socket("local exteranl device ip", 5000);
if(socket.isConnected())    {
         int methodname = 5;
            int payload  = 2151;
            int payloadLength = 2;

            ByteBuffer buffer = ByteBuffer.allocate(3 + payloadLength); // 3 = for method name + length
            buffer.order(ByteOrder.BIG_ENDIAN); // Just to be explicit

            buffer.put((byte) methodname);
            buffer.putShort((short) payloadLength);
            buffer.putShort((short) payload);

            buffer.rewind();
            byte[] result = new byte[buffer.capacity()]; // Could also use result = buffer.array();
            buffer.get(result);

    DataOutputStream classOUTstream = new DataOutputStream(socket.getOutputStream());
    // socket is already connected
             classOUTstream.write(result);
             classOUTstream.flush();

     InputStream stream = socket.getInputStream();
     byte[] data = new byte[100];
     int count = stream.read(data);
}

Above Code is Android, i knowing only basic concept of java. i am getting -1 result in count.

can any one please suggest me or tell me my mistake?

Upvotes: 1

Views: 947

Answers (1)

user207421
user207421

Reputation: 311039

You're doing this the hard way. Get rid of the ByteBuffer altogether and use all the methods of DataOutputStream. They are all big-endian. I can't see any mistake but clearly you must be sending something the peer didn't understand so he is closing the connection instead of sending a reply.

Note: Socket.isConnected() cannot possibly be false at the point you're testing it.

Upvotes: 1

Related Questions