Come si progetta un ciclo di lettura e scrittura che funziona su un singolo socket (che supporta operazioni di lettura e scrittura parallele)? Devo usare più thread? La mia soluzione (java) va bene? Che mi dici di quel comando del sonno? Come lo usi all'interno di un tale ciclo?Best practice per la lettura/scrittura su una presa del server java
Sto cercando di utilizzare 2 Discussioni:
Leggi
public void run() {
InputStream clientInput;
ByteArrayOutputStream byteBuffer;
BufferedInputStream bufferedInputStream;
byte[] data;
String dataString;
int lastByte;
try {
clientInput = clientSocket.getInputStream();
byteBuffer = new ByteArrayOutputStream();
bufferedInputStream = new BufferedInputStream(clientInput);
while(isRunning) {
while ((lastByte = bufferedInputStream.read()) > 0) {
byteBuffer.write(lastByte);
}
data = byteBuffer.toByteArray();
dataString = new String(data);
byteBuffer.reset();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Scrivi
public void run() {
OutputStream clientOutput;
byte[] data;
String dataString;
try {
clientOutput = clientSocket.getOutputStream();
while(isOpen) {
if(!commandQueue.isEmpty()) {
dataString = commandQueue.poll();
data = dataString.getBytes();
clientOutput.write(data);
}
Thread.sleep(1000);
}
clientOutput.close();
}
catch (IOException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
Leggi non riesce a fornire un risultato corretto, dal momento che non v'è alcuna -1 inviato. Come posso risolvere questo problema?
Questo ciclo di sospensione/scrittura è una buona soluzione?
È Java? Si prega di taggare la lingua –
questa è java, ma questa è più una domanda di progettazione e non si riferisce a nessuna caratteristica java stessa – Schifty
Vero, ma rende la domanda più specifica –