J'ai un client Java qui envoie des chaînes UTF-8 à un serveur TCP C#, j'utilise un DataOutputStream pour envoyer les chaînes. Le code ressemble à ceci:DataOutputStream non videur
public void sendUTF8String(String ar) {
if (socket.isConnected()) {
try {
dataOutputStream.write(ar.getBytes(Charset.forName("UTF-8")));
dataOutputStream.flush();
} catch (IOException e) {
handleException(e);
}
}
}
Le problème est que le vidage ne semble pas fonctionner correctement. Si j'envoie deux chaînes proches l'une de l'autre, le serveur reçoit un seul message avec les deux chaînes. Le tout fonctionne si je fais un Thread.sleep (1000) entre les appels, ce n'est évidemment pas une solution. Qu'est-ce qui me manque?
Je commençais une réponse aussi, mais il ne a ajouté que la mise en mémoire tampon sur le côté de la réception pourrait gâcher tout vous chasse d'eau pourrait faire sur le client, même si vous pouviez tirer de manière fiable (ce qui en général vous pouvez). Mais peu importe ce que vous faites sur le client, le serveur tamponnera toujours ses données de socket. – PSpeed