TCPTest Server attempt

Dependencies:   EthernetNetIf mbed

Committer:
OTBsolar
Date:
Tue Mar 15 11:50:38 2011 +0000
Revision:
0:f8aba92e4c46
Child:
1:7785624d8f35
beta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
OTBsolar 0:f8aba92e4c46 1 #include "mbed.h"
OTBsolar 0:f8aba92e4c46 2 #include "EthernetNetIf.h"
OTBsolar 0:f8aba92e4c46 3 #include "TCPSocket.h"
OTBsolar 0:f8aba92e4c46 4
OTBsolar 0:f8aba92e4c46 5 EthernetNetIf eth;
OTBsolar 0:f8aba92e4c46 6 DigitalOut led1(LED1);
OTBsolar 0:f8aba92e4c46 7
OTBsolar 0:f8aba92e4c46 8
OTBsolar 0:f8aba92e4c46 9 TCPSocket tcp; //The listening port where requests are queued
OTBsolar 0:f8aba92e4c46 10 TCPSocket* link; //The port where accepted requests can communicate
OTBsolar 0:f8aba92e4c46 11
OTBsolar 0:f8aba92e4c46 12 void onTCPSocketEvent(TCPSocketEvent e)
OTBsolar 0:f8aba92e4c46 13 {
OTBsolar 0:f8aba92e4c46 14 switch(e)
OTBsolar 0:f8aba92e4c46 15 {
OTBsolar 0:f8aba92e4c46 16 case TCPSOCKET_CONNECTED:
OTBsolar 0:f8aba92e4c46 17 printf("Connected\n");
OTBsolar 0:f8aba92e4c46 18 break;
OTBsolar 0:f8aba92e4c46 19
OTBsolar 0:f8aba92e4c46 20 case TCPSOCKET_ACCEPT:
OTBsolar 0:f8aba92e4c46 21 printf("Accepted\n");
OTBsolar 0:f8aba92e4c46 22 break;
OTBsolar 0:f8aba92e4c46 23
OTBsolar 0:f8aba92e4c46 24 case TCPSOCKET_READABLE:
OTBsolar 0:f8aba92e4c46 25 printf("Readable\n");
OTBsolar 0:f8aba92e4c46 26 break;
OTBsolar 0:f8aba92e4c46 27
OTBsolar 0:f8aba92e4c46 28 case TCPSOCKET_WRITEABLE:
OTBsolar 0:f8aba92e4c46 29 printf("Writeable\n");
OTBsolar 0:f8aba92e4c46 30 break;
OTBsolar 0:f8aba92e4c46 31
OTBsolar 0:f8aba92e4c46 32 case TCPSOCKET_CONTIMEOUT:
OTBsolar 0:f8aba92e4c46 33 printf("Timeout\n");
OTBsolar 0:f8aba92e4c46 34 break;
OTBsolar 0:f8aba92e4c46 35
OTBsolar 0:f8aba92e4c46 36 case TCPSOCKET_CONRST:
OTBsolar 0:f8aba92e4c46 37 printf("Reset\n");
OTBsolar 0:f8aba92e4c46 38 break;
OTBsolar 0:f8aba92e4c46 39 case TCPSOCKET_CONABRT:
OTBsolar 0:f8aba92e4c46 40 printf("Aborted\n");
OTBsolar 0:f8aba92e4c46 41 break;
OTBsolar 0:f8aba92e4c46 42
OTBsolar 0:f8aba92e4c46 43 case TCPSOCKET_ERROR:
OTBsolar 0:f8aba92e4c46 44 printf("Error\n");
OTBsolar 0:f8aba92e4c46 45 break;
OTBsolar 0:f8aba92e4c46 46
OTBsolar 0:f8aba92e4c46 47 case TCPSOCKET_DISCONNECTED:
OTBsolar 0:f8aba92e4c46 48 printf("Disconnected\n");
OTBsolar 0:f8aba92e4c46 49 tcp.close();
OTBsolar 0:f8aba92e4c46 50 break;
OTBsolar 0:f8aba92e4c46 51 }
OTBsolar 0:f8aba92e4c46 52 }
OTBsolar 0:f8aba92e4c46 53
OTBsolar 0:f8aba92e4c46 54 int main() {
OTBsolar 0:f8aba92e4c46 55 //********Basic setup********
OTBsolar 0:f8aba92e4c46 56 printf("Welcome to wireFUSE\n");
OTBsolar 0:f8aba92e4c46 57 printf("Setting up...\n");
OTBsolar 0:f8aba92e4c46 58 EthernetErr ethErr = eth.setup();
OTBsolar 0:f8aba92e4c46 59 if(ethErr)
OTBsolar 0:f8aba92e4c46 60 {
OTBsolar 0:f8aba92e4c46 61 printf("Error %d in setup.\n", ethErr);
OTBsolar 0:f8aba92e4c46 62 return -1;
OTBsolar 0:f8aba92e4c46 63 }
OTBsolar 0:f8aba92e4c46 64 printf("Setup OK\n");
OTBsolar 0:f8aba92e4c46 65 //****End of basic setup*****
OTBsolar 0:f8aba92e4c46 66
OTBsolar 0:f8aba92e4c46 67 tcp.setOnEvent(&onTCPSocketEvent); //Generate method
OTBsolar 0:f8aba92e4c46 68 Host local(IpAddr(130,144,3,9), 12345); //mbed IP
OTBsolar 0:f8aba92e4c46 69 Host client;
OTBsolar 0:f8aba92e4c46 70
OTBsolar 0:f8aba92e4c46 71 Timer tmr;
OTBsolar 0:f8aba92e4c46 72 tmr.start();
OTBsolar 0:f8aba92e4c46 73 while(true)
OTBsolar 0:f8aba92e4c46 74 {
OTBsolar 0:f8aba92e4c46 75 Net::poll();
OTBsolar 0:f8aba92e4c46 76 if(tmr.read() > 2)
OTBsolar 0:f8aba92e4c46 77 {
OTBsolar 0:f8aba92e4c46 78 tmr.reset();
OTBsolar 0:f8aba92e4c46 79 led1=!led1; //Show that we are alive
OTBsolar 0:f8aba92e4c46 80
OTBsolar 0:f8aba92e4c46 81 //Bind to local port
OTBsolar 0:f8aba92e4c46 82 printf("Init bind..\n");
OTBsolar 0:f8aba92e4c46 83 TCPSocketErr bindErr = tcp.bind(local);
OTBsolar 0:f8aba92e4c46 84 if(bindErr == 0) {
OTBsolar 0:f8aba92e4c46 85 printf("Bound to port\n");
OTBsolar 0:f8aba92e4c46 86 }
OTBsolar 0:f8aba92e4c46 87 else {
OTBsolar 0:f8aba92e4c46 88 printf("Error %i\n",bindErr);
OTBsolar 0:f8aba92e4c46 89 }
OTBsolar 0:f8aba92e4c46 90
OTBsolar 0:f8aba92e4c46 91 //Listen to local port
OTBsolar 0:f8aba92e4c46 92 printf("Init listen..\n");
OTBsolar 0:f8aba92e4c46 93 TCPSocketErr listenErr = tcp.listen();
OTBsolar 0:f8aba92e4c46 94 if(listenErr == 0) {
OTBsolar 0:f8aba92e4c46 95 printf("Listening to port");
OTBsolar 0:f8aba92e4c46 96 }
OTBsolar 0:f8aba92e4c46 97 else {
OTBsolar 0:f8aba92e4c46 98 printf("Error %i\n",listenErr);
OTBsolar 0:f8aba92e4c46 99 }
OTBsolar 0:f8aba92e4c46 100
OTBsolar 0:f8aba92e4c46 101 //Wait for a connection request
OTBsolar 0:f8aba92e4c46 102 printf("waiting for client on port 12345");
OTBsolar 0:f8aba92e4c46 103 TCPSocketErr accErr = tcp.accept(&local,&link);
OTBsolar 0:f8aba92e4c46 104 if(accErr == 0) {
OTBsolar 0:f8aba92e4c46 105 printf("Connection accepted\n");
OTBsolar 0:f8aba92e4c46 106 }
OTBsolar 0:f8aba92e4c46 107 else {
OTBsolar 0:f8aba92e4c46 108 printf("Error opening connection\n");
OTBsolar 0:f8aba92e4c46 109 }
OTBsolar 0:f8aba92e4c46 110 }
OTBsolar 0:f8aba92e4c46 111 }
OTBsolar 0:f8aba92e4c46 112 }