![](/img/trans.png)
[英]How to read a datainputstream when using a dataoutputstream to write bytes to socket?
[英]Read and Write Bytes data packet via socket
我想通過套接字將Android設備連接到外部設備。 套接字成功連接到外部設備。
現在,如果外部設備需要任何數據,則按以下順序將字節數據包數據請求發送到套接字。 如果外部設備正確接收數據,則發送字節數據作為響應。
參數:methodname(1個字節),payloadlength(2個字節),payload(2個字節)。
現在我的密碼是...
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);
}
上面的代碼是Android,我只知道Java的基本概念。 我得到-1結果計數。
有人可以建議我還是告訴我我的錯誤?
您正在艱難地做到這一點。 完全擺脫ByteBuffer
並使用DataOutputStream
所有方法。 他們都是大端。 我看不到任何錯誤,但很明顯,您肯定是在發送對等方不理解的內容,因此他正在關閉連接而不是發送答復。
注意: Socket.isConnected()
在測試時不能為假。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.