Ich habe gelesen, dass das Schreiben über Sockets aufgrund des String-Bruchs eine Pufferung erfordert. Irgendwie habe ich herausgefunden, dass dies wahr ist, als ich einen Jaxb-Unmarshaller verwendet habe und dieser eine SAX-EOF-Ausnahme gemeldet hat, was bedeutet, dass die gelesene XML-Datei nicht vollständig war.
Wie kann ich das Schreiben und Lesen richtig puffern?
Code: Select all
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append("").append(hd.getRequestType()).append("");
sb.append("");
sb.append("").append(rq.getAgentCode()).append("");
sb.append("").append(rq.getPin()).append("");
sb.append("").append(rq.getDestination()).append("");
sb.append("").append(rq.getAgentTransId()).append("");
sb.append("").append(rq.getVendorCode()).append("");
sb.append("").append(rq.getAmount()).append("");
sb.append("").append(rq.getProductCode()).append("");
sb.append("").append(rq.getComments()).append("");
sb.append("").append(rq.getClientType()).append("");
sb.append("");
Socket socket = new Socket("41.206.23.21",7101);
OutputStream os = socket.getOutputStream();
InputStream in = socket.getInputStream();
OutputStream buf = new BufferedOutputStream(os);
out = new OutputStreamWriter(buf);
System.out.printf("\nxml is %s",sb.toString());
System.out.print("\n--------writing--to--socket-----");
out.write(sb.toString());
out.flush();
//read response
InputStream bui = new BufferedInputStream(in);
rd = new InputStreamReader(bui);
System.out.print("\nxml response"+rd.toString());
in.close();
out.close();
socket.close();