Avez-vous résolu le problème du TCP persistant ? Puisqu'il s'agit de TCP, nous devons considérer les 粘包 problèmes. 粘包Si le problème n'est pas résolu, vous ne pourrez pas déterminer quels octets constituent les 4 premiers octets d'un paquet.
En bref, vous recevez beaucoup d'octets, et la source de ces octets peut être la suivante :
Envoyer tous les octets de deux ou trois paquets ensemble
La seconde moitié du paquet précédent et la première moitié des octets du paquet suivant sont envoyées ensemble
En bref, c'est un mélange d'un demi-sac ou d'un sachet collant
Nous utilisons netty pour résoudre le problème des paquets collants TCP Voici une solution bien expliquée basée sur netty : https://my.oschina.net/andylu...
Il s'agit d'un problème d'en-tête de communication de socket. Voici comment je l'ai géré dans mon projet précédent. L'extrait de code est le suivant :
send(String url, int port, String content){
Socket socket = null;
OutputStream out = null;
DataOutputStream dataOutputStream = null;
try {
socket = new Socket(url, port);
out = socket.getOutputStream();
dataOutputStream = new DataOutputStream(out);
dataOutputStream.writeInt(content.getBytes().length);
dataOutputStream.write(content.getBytes());
dataOutputStream.flush();
...
}
}
Il est recommandé d'écrire un socket de réception pour le débogage. Je n'ai jamais utilisé l'outil de capture de paquets ou débogué conjointement avec l'autre partie. Si l'autre partie peut le recevoir et l'analyser avec succès, tout ira bien. J'ai besoin d'avoir des ennuis avec la capture de paquets. J'espère que cela pourra vous aider~
Avez-vous résolu le problème du TCP persistant ?
Puisqu'il s'agit de TCP, nous devons considérer les
粘包
problèmes.粘包
Si le problème n'est pas résolu, vous ne pourrez pas déterminer quels octets constituent les 4 premiers octets d'un paquet.En bref, vous recevez beaucoup d'octets, et la source de ces octets peut être la suivante :
Envoyer tous les octets de deux ou trois paquets ensemble
La seconde moitié du paquet précédent et la première moitié des octets du paquet suivant sont envoyées ensemble
En bref, c'est un mélange d'un demi-sac ou d'un sachet collant
Nous utilisons
.netty
pour résoudre le problème des paquets collants TCP Voici une solution bien expliquée basée surnetty
: https://my.oschina.net/andylu...Que signifie lire le flux d'entrée directement en Java sans capturer le paquet ?
Il s'agit d'un problème d'en-tête de communication de socket. Voici comment je l'ai géré dans mon projet précédent. L'extrait de code est le suivant :
Il est recommandé d'écrire un socket de réception pour le débogage. Je n'ai jamais utilisé l'outil de capture de paquets ou débogué conjointement avec l'autre partie. Si l'autre partie peut le recevoir et l'analyser avec succès, tout ira bien. J'ai besoin d'avoir des ennuis avec la capture de paquets.
.J'espère que cela pourra vous aider~
Avez-vous suivi flush ?