oijoijoij

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPSocket_HelloWorld by mbed official

Committer:
educalle00
Date:
Thu Jul 02 21:03:39 2015 +0000
Revision:
16:b9b148b32ca8
Parent:
11:59dcefdda506
v0.2;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
donatien 0:bb128f0e952f 2 #include "EthernetInterface.h"
educalle00 16:b9b148b32ca8 3
educalle00 16:b9b148b32ca8 4 #define IP "192.168.1.10"
educalle00 16:b9b148b32ca8 5 #define GATEWAY "192.168.1.1"
educalle00 16:b9b148b32ca8 6 #define MASK "255.255.255.0"
educalle00 16:b9b148b32ca8 7 #define DES_ADDR "192.168.1.12"
educalle00 16:b9b148b32ca8 8 #define DES_LAPTOP "192.168.1.11"
educalle00 16:b9b148b32ca8 9
educalle00 16:b9b148b32ca8 10 #define PORT 54321
educalle00 16:b9b148b32ca8 11
educalle00 16:b9b148b32ca8 12 Serial pc(USBTX,USBRX);
donatien 0:bb128f0e952f 13
emilmont 7:65188f4a8c25 14 int main() {
educalle00 16:b9b148b32ca8 15
educalle00 16:b9b148b32ca8 16 int resul=-1;
educalle00 16:b9b148b32ca8 17 pc.baud(9600);
educalle00 16:b9b148b32ca8 18
educalle00 16:b9b148b32ca8 19 /** Configuramos el puerto ethernet **************************************************/
donatien 0:bb128f0e952f 20 EthernetInterface eth;
educalle00 16:b9b148b32ca8 21 pc.printf("Inicializando el puerto ethernet... \n\r");
educalle00 16:b9b148b32ca8 22 //resul=eth.init(IP,MASK,GATEWAY);
educalle00 16:b9b148b32ca8 23 resul=eth.init();
educalle00 16:b9b148b32ca8 24 if(resul==0)pc.printf("Puerto ethernet inicializado correctamente..\n\r");
educalle00 16:b9b148b32ca8 25
educalle00 16:b9b148b32ca8 26 pc.printf("Obteniendo direccion IP...resul=%d\n\r",resul);
educalle00 16:b9b148b32ca8 27 resul=eth.connect();
donatien 0:bb128f0e952f 28
educalle00 16:b9b148b32ca8 29 if(resul==0)
educalle00 16:b9b148b32ca8 30 pc.printf("IP Address is %s\n", eth.getIPAddress());
educalle00 16:b9b148b32ca8 31 else
educalle00 16:b9b148b32ca8 32 pc.printf("Fallo la conexion...IP Address is %s\n\r",eth.getIPAddress());
educalle00 16:b9b148b32ca8 33 /* Terminada la configuración del ethernet */
donatien 0:bb128f0e952f 34
educalle00 16:b9b148b32ca8 35 /** Creamos el nodo servidor *****************************************************/
educalle00 16:b9b148b32ca8 36 TCPSocketServer server; //crea el objeto de tipo servidor
educalle00 16:b9b148b32ca8 37 server.bind(PORT); //Enlaza el socket server a un puerto
educalle00 16:b9b148b32ca8 38 server.listen(); //Queda escuchando por una nueva conexion.
educalle00 16:b9b148b32ca8 39 /*********************************************************************************/
emilmont 7:65188f4a8c25 40
educalle00 16:b9b148b32ca8 41 /** Esperamos por la conexion de un cliente **************************************/
emilmont 7:65188f4a8c25 42 while (true) {
educalle00 16:b9b148b32ca8 43 printf("\nWait for new connection...\n\r");
educalle00 16:b9b148b32ca8 44 TCPSocketConnection client; //creamos un nuevo cliente
educalle00 16:b9b148b32ca8 45 server.accept(client); //aceptamos la conexión de una nuevo cliente
educalle00 16:b9b148b32ca8 46 client.set_blocking(true, 1500); // Timeout after (1.5)s
educalle00 16:b9b148b32ca8 47
educalle00 16:b9b148b32ca8 48 printf("Connection from: %s\n", client.get_address());
educalle00 16:b9b148b32ca8 49
educalle00 16:b9b148b32ca8 50 //Define useful variables
educalle00 16:b9b148b32ca8 51 char buffer[256];
educalle00 16:b9b148b32ca8 52 char command[20];
educalle00 16:b9b148b32ca8 53
educalle00 16:b9b148b32ca8 54
educalle00 16:b9b148b32ca8 55 while (true) {
educalle00 16:b9b148b32ca8 56 int n = client.receive(buffer, sizeof(buffer));
educalle00 16:b9b148b32ca8 57 if (n <= 0) break;
educalle00 16:b9b148b32ca8 58
educalle00 16:b9b148b32ca8 59 // print received message to terminal
educalle00 16:b9b148b32ca8 60 buffer[n] = '\0';
educalle00 16:b9b148b32ca8 61 printf("Received message from Client :'%s'\n\r",buffer);
educalle00 16:b9b148b32ca8 62
educalle00 16:b9b148b32ca8 63 sscanf(buffer,"%s",command);
educalle00 16:b9b148b32ca8 64 printf("Command detected :'%s'\n\r",command);
educalle00 16:b9b148b32ca8 65
educalle00 16:b9b148b32ca8 66 if(strcmp(command,"Hello")==0)
educalle00 16:b9b148b32ca8 67 {
educalle00 16:b9b148b32ca8 68 pc.printf("He recibido el comando Hello...\n\r");
educalle00 16:b9b148b32ca8 69 sprintf(buffer,"%d",1);
educalle00 16:b9b148b32ca8 70 client.send_all(buffer, sizeof(buffer));
educalle00 16:b9b148b32ca8 71 }
educalle00 16:b9b148b32ca8 72 else
educalle00 16:b9b148b32ca8 73 pc.printf("Command not identified.. \n\r");
educalle00 16:b9b148b32ca8 74
educalle00 16:b9b148b32ca8 75
educalle00 16:b9b148b32ca8 76
educalle00 16:b9b148b32ca8 77 /*printf("Received message from Client :'%s'\n\r",buffer);
educalle00 16:b9b148b32ca8 78 // reverse the message
educalle00 16:b9b148b32ca8 79 char temp;
educalle00 16:b9b148b32ca8 80 for(int f = 0, l = n-1; f<l; f++,l--){
educalle00 16:b9b148b32ca8 81 temp = buffer[f];
educalle00 16:b9b148b32ca8 82 buffer[f] = buffer[l];
educalle00 16:b9b148b32ca8 83 buffer[l] = temp;
educalle00 16:b9b148b32ca8 84 }
educalle00 16:b9b148b32ca8 85
educalle00 16:b9b148b32ca8 86 // print reversed message to terminal
educalle00 16:b9b148b32ca8 87 printf("Sending message to Client: '%s'\n\r",buffer);
educalle00 16:b9b148b32ca8 88
educalle00 16:b9b148b32ca8 89 // Echo received message back to client
educalle00 16:b9b148b32ca8 90 client.send_all(buffer, n);
educalle00 16:b9b148b32ca8 91 if (n <= 0) break;*/
educalle00 16:b9b148b32ca8 92 }
educalle00 16:b9b148b32ca8 93 pc.printf("El cliente se ha desconectado..\n\r");
educalle00 16:b9b148b32ca8 94 client.close();
emilmont 7:65188f4a8c25 95 }
educalle00 16:b9b148b32ca8 96
educalle00 16:b9b148b32ca8 97 }