Hola a todos,
acabo de empezar con Arduino y tengo una Duemilanove con una Ethernet Shield con chip WIZ5100, todo de Libelium. Quiero enviar datos a un servidor java que tiene un socket en modo servidor a la escucha de conexiones. Esto me funciona si le envio datos desde otro programa java, pero no desde arduino. El código de socket servidor java es el siguiente:
import java.io.;
import java.net.;
public class ServerSideSocket {
public static void main (String[] args) throws Exception{
// bucle infinito Ctrl+C para fin
ServerSocket ss = new ServerSocket(111);
System.out.println(" El server escucha por " +InetAddress.getLocalHost() + " a través del puerto " + ss.getLocalPort());
while (true) {
Socket s = ss.accept();//espera al cliente
DataInputStream dis = new DataInputStream(s.getInputStream());
String message = dis.readUTF();// wait for client to send
System.out.println(message);
dis.close();
}
}
}
El código cliente java es este:
import java.io.;
import java.net.;
public class ClientSideSocket {
public static void main (String[] args) throws Exception {
if (args.length != 3) {
System.out.println(" Formato: java ClientSide Hostname port mensaje");
System.exit(0);
}
String serverName = args[0];
int serverPort = Integer.parseInt(args[1]);
String message = args[2];
Socket s = new Socket(serverName, serverPort);
// espera que el servidor acepte
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(message);
dos.close();
}
}
Y el código arduino es el siguiente:
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte server[] = { 192, 168, 1, 13 };
Client client(server, 111);
void setup(){
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect()) {
Serial.println("connected");
}
else {
Serial.println("connection failed");
}
}
void loop(){
if (client.connected()) {
client.println("mensaje desde arduino");
client.stop();
}
}
Con el Wireshark he visto que arduino sí envia paquetes al servidor, pero parece que no se entiende con Java. ¿Alguien me puede ayudar?
Gracias de antemano y un saludo,