Reinicialização da conexão por pares: erro de gravação do soquete. O que há de errado com meu código Java
Estou tentando criar e manter uma conexão TCP com um host a partir de um aplicativo java independente.
A porta local e a porta do servidor são iguais = 8999. Após a conexão, tenho que enviar uma mensagem para o servidor:< STX >username=fred&password=abcd< ETX >
.
O código para criação de soquete e envio de mensagens é da seguinte maneira:
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();
}
Mas a conexão não persiste. Na depuração, encontro o seguinte erro:
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");
Nota: Este mesmo programa é executado com êxito quando conectado a um servidor fictício (localhost) na minha máquina onde eu posso receber e enviar mensagens.
Por favor ajude.