J'essaye de créer et de maintenir une connexion TCP à un hôte à partir d'une application Java autonome.Connexion réinitialisée par un homologue: erreur d'écriture du socket. Quel est le problème avec mon code Java
Le port local et le port du serveur sont identiques = 8999. Après la connexion, je dois envoyer un message au serveur: <STX>username=fred&password=abcd<ETX>
.
Le code pour la création de socket et envoi de message va comme:
Socket socket = new Socket("mshxml.abcd.com", 8999, InetAddress.getLocalHost(), 8999);
OutputStream outStream = socket.getOutputStream();
while (socket.isConnected()) {
try {
int stx = 2, etx = 3;
DataOutputStream dout = new DataOutputStream(outStream);
dout.writeByte(stx);
dout.writeBytes("username=fred&password=abcd");
dout.writeByte(etx);
} catch (Exception e) {
e.printStackTrace();
}
Mais la connexion ne persiste pas. Le débogage, je trouve l'erreur suivante:
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeBytes(Unknown Source)
at com.voya.socketprog.CClient.createConnection(CClient.java:120)
at com.voya.socketprog.CClient.createSocket(CClient.java:33)
at com.voya.socketprog.CClient.main(CClient.java:138) Line 120 is: dout.writeBytes("username=fred&password=abcd");
Note: Ce même programme fonctionne avec succès lorsque vous êtes connecté à un serveur factice (localhost) sur ma machine où je suis capable de recevoir et d'envoyer des messages.
Aidez-nous s'il vous plaît.
'Le port local et le port du serveur sont identiques = 8999' Pourquoi? – EJP