Я работаю над проектом, который использует .net и java, используя zeromq для связи между ними.
Я могу подключиться к серверу .net, однако, когда я пытаюсь преобразовать байтовый массив в строку, происходят странные вещи. В отладчике затмения я вижу строку и ее длину. Когда я нажимаю на строку, ее значение меняется на первую букву, а длина меняется на 1. В консоли eclipse, когда я пытаюсь скопировать и вставить вывод, я получаю только первую букву. Я также попытался запустить его в NetBeans и получить ту же проблему.
Я думал, что это может быть из-за Endianness, поэтому устали оба
BIG_ENDIAN
LITTLE_ENDIAN
Кто-нибудь знает, как получить полную строку, а не только первую букву?
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.zeromq.ZMQ;
class local_thr
{
private static final String ENDPOINT = "tcp://127.0.0.1:8000";
static String[] myargs={ENDPOINT, "1000", "100"};
public static void main (String [] args) {
args = myargs;
ZMQ.Context ctx = ZMQ.context (1);
ZMQ.Socket s = ctx.socket (ZMQ.SUB);
s.subscribe("".getBytes());
s.connect (ENDPOINT);
while(true){
byte [] data = s.recv (0);
ByteBuffer buf = ByteBuffer.wrap(data);
buf.order(ByteOrder.nativeOrder());
byte[] bytes = new byte[buf.remaining()];
buf.get(bytes, 0, bytes.length);
String quote;
quote = new String(bytes);
String myQuote;
myQuote = new String();
System.out.println (quote);
}
}
}