
oijoijoij
Dependencies: EthernetInterface mbed-rtos mbed
Fork of TCPSocket_HelloWorld by
main.cpp@16:b9b148b32ca8, 2015-07-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |