0

ポートとIPをリッスンする1つのサーバーと、このサーバーに接続するクライアントがあります。

DataInputStream meterin=new DataInputStream(socket.getInputStream);
DataOutputStream modemds=new DataOutputStream(modems.getOutputStream);

現在、サーバーはここにデータを送信しています:(CA F0 00 00 00 00 00 00 00 3A).しかし、これを次のように読むと

int c;
byte bt[]=new byte[11]
c=meterin.read(bt,0,11)`
System.out.println("bytes"+c)  // it is returning 10 bytes

modemds.write(bt,0,c)

しかし、クライアントで私は得ています。(CA F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)。これは、10 バイト上を読んでいても 10 バイト以上です。

4

2 に答える 2

1

読み取りによってバッファーがいっぱいになると想定することはできません。別の方法については readFully() を参照するか、必要なデータがすべて取得されるまでループします。

于 2012-08-11T10:09:23.323 に答える
0

いくつかの仮定と fFrom コードを使用すると、サーバーからデータを読み取り、それを別のリスナーまたはクライアントとして呼び出すものに中継しているように見えます。そのため、クライアント側のコードで、受信バッファが送信されるデータ以上に初期化されているかどうかを確認してください..それにより、出力に追加のバイトが追加されます。その場合は、System.arrayCopy を使用して、受信バッファーから実際のバイトをコピーします (クライアント コードが Java であると仮定します)。

于 2012-08-11T10:17:20.687 に答える