it doesent work

Dependencies:   EthernetNetIf mbed

Fork of TCP_server by Shigeki KOMATSU

Committer:
wango
Date:
Tue Oct 29 23:05:06 2013 +0000
Revision:
2:776a8f41728f
Parent:
1:da09e6a94937
TCP SERVER FET10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xshige 0:c3fbb0514bfc 1
xshige 0:c3fbb0514bfc 2 // TCP Echo server
xshige 1:da09e6a94937 3 // 2010/9/7
xshige 0:c3fbb0514bfc 4
xshige 0:c3fbb0514bfc 5
xshige 0:c3fbb0514bfc 6 /*
xshige 0:c3fbb0514bfc 7
xshige 0:c3fbb0514bfc 8 (Execute Sample)
xshige 0:c3fbb0514bfc 9 PC side:
xshige 0:c3fbb0514bfc 10 telnet 192.168.0.25 12345
xshige 0:c3fbb0514bfc 11 Trying 192.168.0.25...
xshige 0:c3fbb0514bfc 12 Connected to 192.168.0.25.
xshige 0:c3fbb0514bfc 13 Escape character is '^]'.
xshige 0:c3fbb0514bfc 14
xshige 0:c3fbb0514bfc 15 mbed side:
xshige 0:c3fbb0514bfc 16 Setup OK
xshige 0:c3fbb0514bfc 17 mbed IP Address is 192.168.0.25
xshige 0:c3fbb0514bfc 18 Binding..
xshige 0:c3fbb0514bfc 19 Listening...
xshige 0:c3fbb0514bfc 20 Listening: TCP Socket Accepted
xshige 0:c3fbb0514bfc 21 Listening: Incoming TCP connection from 192.168.0.7
xshige 0:c3fbb0514bfc 22 TCP Socket Readable
xshige 0:c3fbb0514bfc 23 Received&Wrote:test text
xshige 0:c3fbb0514bfc 24
xshige 0:c3fbb0514bfc 25 TCP Socket Writable
xshige 0:c3fbb0514bfc 26
xshige 0:c3fbb0514bfc 27
xshige 0:c3fbb0514bfc 28 */
xshige 0:c3fbb0514bfc 29
xshige 0:c3fbb0514bfc 30 #include "mbed.h"
xshige 0:c3fbb0514bfc 31 #include "EthernetNetIf.h"
xshige 0:c3fbb0514bfc 32 #include "TCPSocket.h"
xshige 0:c3fbb0514bfc 33
xshige 0:c3fbb0514bfc 34 DigitalOut led4(LED4, "led4");
wango 2:776a8f41728f 35 DigitalOut led(LED1);
xshige 0:c3fbb0514bfc 36
xshige 0:c3fbb0514bfc 37 // EthernetNetIf eth;
xshige 0:c3fbb0514bfc 38 EthernetNetIf eth(
xshige 0:c3fbb0514bfc 39 IpAddr(192,168,0,25), //IP Address
xshige 0:c3fbb0514bfc 40 IpAddr(255,255,255,0), //Network Mask
xshige 0:c3fbb0514bfc 41 IpAddr(192,168,0,1), //Gateway
xshige 0:c3fbb0514bfc 42 IpAddr(192,168,0,1) //DNS
xshige 0:c3fbb0514bfc 43 );
xshige 0:c3fbb0514bfc 44
xshige 0:c3fbb0514bfc 45 #define TCP_LISTENING_PORT 12345
xshige 0:c3fbb0514bfc 46
xshige 0:c3fbb0514bfc 47 TCPSocket ListeningSock;
xshige 0:c3fbb0514bfc 48 TCPSocket* pConnectedSock; // for ConnectedSock
xshige 0:c3fbb0514bfc 49 Host client;
xshige 0:c3fbb0514bfc 50 TCPSocketErr err;
xshige 0:c3fbb0514bfc 51
xshige 0:c3fbb0514bfc 52 void onConnectedTCPSocketEvent(TCPSocketEvent e)
xshige 0:c3fbb0514bfc 53 {
xshige 0:c3fbb0514bfc 54 switch(e)
xshige 0:c3fbb0514bfc 55 {
xshige 0:c3fbb0514bfc 56 case TCPSOCKET_CONNECTED:
xshige 0:c3fbb0514bfc 57 printf("TCP Socket Connected\r\n");
xshige 0:c3fbb0514bfc 58 break;
xshige 0:c3fbb0514bfc 59 case TCPSOCKET_WRITEABLE:
xshige 0:c3fbb0514bfc 60 //Can now write some data...
xshige 0:c3fbb0514bfc 61 printf("TCP Socket Writable\r\n");
xshige 0:c3fbb0514bfc 62 break;
xshige 0:c3fbb0514bfc 63 case TCPSOCKET_READABLE:
xshige 0:c3fbb0514bfc 64 //Can now read dome data...
xshige 0:c3fbb0514bfc 65 printf("TCP Socket Readable\r\n");
xshige 0:c3fbb0514bfc 66 // Read in any available data into the buffer
xshige 0:c3fbb0514bfc 67 char buff[128];
xshige 0:c3fbb0514bfc 68 while ( int len = pConnectedSock->recv(buff, 128) ) {
xshige 0:c3fbb0514bfc 69 // And send straight back out again
xshige 0:c3fbb0514bfc 70 pConnectedSock->send(buff, len);
xshige 1:da09e6a94937 71 buff[len]=0; // make terminater
xshige 0:c3fbb0514bfc 72 printf("Received&Wrote:%s\r\n",buff);
xshige 0:c3fbb0514bfc 73 }
xshige 0:c3fbb0514bfc 74 break;
xshige 0:c3fbb0514bfc 75 case TCPSOCKET_CONTIMEOUT:
xshige 0:c3fbb0514bfc 76 printf("TCP Socket Timeout\r\n");
xshige 0:c3fbb0514bfc 77 break;
xshige 0:c3fbb0514bfc 78 case TCPSOCKET_CONRST:
xshige 0:c3fbb0514bfc 79 printf("TCP Socket CONRST\r\n");
xshige 0:c3fbb0514bfc 80 break;
xshige 0:c3fbb0514bfc 81 case TCPSOCKET_CONABRT:
xshige 0:c3fbb0514bfc 82 printf("TCP Socket CONABRT\r\n");
xshige 0:c3fbb0514bfc 83 break;
xshige 0:c3fbb0514bfc 84 case TCPSOCKET_ERROR:
xshige 0:c3fbb0514bfc 85 printf("TCP Socket Error\r\n");
xshige 0:c3fbb0514bfc 86 break;
xshige 0:c3fbb0514bfc 87 case TCPSOCKET_DISCONNECTED:
xshige 0:c3fbb0514bfc 88 //Close socket...
xshige 0:c3fbb0514bfc 89 printf("TCP Socket Disconnected\r\n");
xshige 0:c3fbb0514bfc 90 pConnectedSock->close();
xshige 0:c3fbb0514bfc 91 break;
xshige 0:c3fbb0514bfc 92 default:
xshige 0:c3fbb0514bfc 93 printf("DEFAULT\r\n");
xshige 0:c3fbb0514bfc 94 }
xshige 0:c3fbb0514bfc 95 }
xshige 0:c3fbb0514bfc 96
xshige 0:c3fbb0514bfc 97
xshige 0:c3fbb0514bfc 98 void onListeningTCPSocketEvent(TCPSocketEvent e)
xshige 0:c3fbb0514bfc 99 {
xshige 0:c3fbb0514bfc 100 switch(e)
xshige 0:c3fbb0514bfc 101 {
xshige 0:c3fbb0514bfc 102 case TCPSOCKET_ACCEPT:
xshige 0:c3fbb0514bfc 103 printf("Listening: TCP Socket Accepted\r\n");
xshige 0:c3fbb0514bfc 104 // Accepts connection from client and gets connected socket.
xshige 0:c3fbb0514bfc 105 err=ListeningSock.accept(&client, &pConnectedSock);
xshige 0:c3fbb0514bfc 106 if (err) {
xshige 0:c3fbb0514bfc 107 printf("onListeningTcpSocketEvent : Could not accept connection.\r\n");
xshige 0:c3fbb0514bfc 108 return; //Error in accept, discard connection
xshige 0:c3fbb0514bfc 109 }
xshige 0:c3fbb0514bfc 110 // Setup the new socket events
xshige 0:c3fbb0514bfc 111 pConnectedSock->setOnEvent(&onConnectedTCPSocketEvent);
xshige 0:c3fbb0514bfc 112 // We can find out from where the connection is coming by looking at the
xshige 0:c3fbb0514bfc 113 // Host parameter of the accept() method
xshige 0:c3fbb0514bfc 114 IpAddr clientIp = client.getIp();
xshige 0:c3fbb0514bfc 115 printf("Listening: Incoming TCP connection from %d.%d.%d.%d\r\n",
xshige 0:c3fbb0514bfc 116 clientIp[0], clientIp[1], clientIp[2], clientIp[3]);
xshige 0:c3fbb0514bfc 117 break;
xshige 0:c3fbb0514bfc 118 // the following cases will not happen
xshige 0:c3fbb0514bfc 119 case TCPSOCKET_CONNECTED:
xshige 0:c3fbb0514bfc 120 printf("Listening: TCP Socket Connected\r\n");
xshige 0:c3fbb0514bfc 121 break;
xshige 0:c3fbb0514bfc 122 case TCPSOCKET_WRITEABLE:
xshige 0:c3fbb0514bfc 123 printf("Listening: TCP Socket Writable\r\n");
xshige 0:c3fbb0514bfc 124 break;
xshige 0:c3fbb0514bfc 125 case TCPSOCKET_READABLE:
xshige 0:c3fbb0514bfc 126 printf("Listening: TCP Socket Readable\r\n");
xshige 0:c3fbb0514bfc 127 break;
xshige 0:c3fbb0514bfc 128 case TCPSOCKET_CONTIMEOUT:
xshige 0:c3fbb0514bfc 129 printf("Listening: TCP Socket Timeout\r\n");
xshige 0:c3fbb0514bfc 130 break;
xshige 0:c3fbb0514bfc 131 case TCPSOCKET_CONRST:
xshige 0:c3fbb0514bfc 132 printf("Listening: TCP Socket CONRST\r\n");
xshige 0:c3fbb0514bfc 133 break;
xshige 0:c3fbb0514bfc 134 case TCPSOCKET_CONABRT:
xshige 0:c3fbb0514bfc 135 printf("Listening: TCP Socket CONABRT\r\n");
xshige 0:c3fbb0514bfc 136 break;
xshige 0:c3fbb0514bfc 137 case TCPSOCKET_ERROR:
xshige 0:c3fbb0514bfc 138 printf("Listening: TCP Socket Error\r\n");
xshige 0:c3fbb0514bfc 139 break;
xshige 0:c3fbb0514bfc 140 case TCPSOCKET_DISCONNECTED:
xshige 0:c3fbb0514bfc 141 //Close socket...
xshige 0:c3fbb0514bfc 142 printf("Listening: TCP Socket Disconnected\r\n");
xshige 0:c3fbb0514bfc 143 ListeningSock.close();
xshige 0:c3fbb0514bfc 144 break;
xshige 0:c3fbb0514bfc 145 default:
xshige 0:c3fbb0514bfc 146 printf("DEFAULT\r\n");
xshige 0:c3fbb0514bfc 147 };
xshige 0:c3fbb0514bfc 148 }
xshige 0:c3fbb0514bfc 149
xshige 0:c3fbb0514bfc 150
xshige 0:c3fbb0514bfc 151 int main() {
xshige 0:c3fbb0514bfc 152 printf("\r\n");
xshige 0:c3fbb0514bfc 153 printf("Setting up...\r\n");
xshige 0:c3fbb0514bfc 154 EthernetErr ethErr = eth.setup();
xshige 0:c3fbb0514bfc 155 if(ethErr)
xshige 0:c3fbb0514bfc 156 {
xshige 0:c3fbb0514bfc 157 printf("Error %d in setup.\r\n", ethErr);
xshige 0:c3fbb0514bfc 158 return -1;
xshige 0:c3fbb0514bfc 159 }
xshige 0:c3fbb0514bfc 160 printf("Setup OK\r\n");
xshige 0:c3fbb0514bfc 161
xshige 0:c3fbb0514bfc 162 IpAddr ip = eth.getIp();
xshige 0:c3fbb0514bfc 163 printf("mbed IP Address is %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]);
xshige 0:c3fbb0514bfc 164
xshige 0:c3fbb0514bfc 165
xshige 0:c3fbb0514bfc 166 // Set the callbacks for Listening
xshige 0:c3fbb0514bfc 167 ListeningSock.setOnEvent(&onListeningTCPSocketEvent);
xshige 0:c3fbb0514bfc 168
xshige 0:c3fbb0514bfc 169 // bind and listen on TCP
xshige 0:c3fbb0514bfc 170 err=ListeningSock.bind(Host(IpAddr(), TCP_LISTENING_PORT));
xshige 0:c3fbb0514bfc 171 printf("Binding..\r\n");
xshige 0:c3fbb0514bfc 172 if(err)
xshige 0:c3fbb0514bfc 173 {
xshige 0:c3fbb0514bfc 174 //Deal with that error...
xshige 0:c3fbb0514bfc 175 printf("Binding Error\n");
xshige 0:c3fbb0514bfc 176 }
xshige 0:c3fbb0514bfc 177 err=ListeningSock.listen(); // Starts listening
xshige 0:c3fbb0514bfc 178 printf("Listening...\r\n");
xshige 0:c3fbb0514bfc 179 if(err)
xshige 0:c3fbb0514bfc 180 {
xshige 0:c3fbb0514bfc 181 printf("Listening Error\r\n");
xshige 0:c3fbb0514bfc 182 }
xshige 0:c3fbb0514bfc 183
xshige 0:c3fbb0514bfc 184 Timer tmr;
xshige 0:c3fbb0514bfc 185 tmr.start();
xshige 0:c3fbb0514bfc 186
xshige 0:c3fbb0514bfc 187 while(true)
xshige 0:c3fbb0514bfc 188 {
xshige 0:c3fbb0514bfc 189 Net::poll();
wango 2:776a8f41728f 190
wango 2:776a8f41728f 191
wango 2:776a8f41728f 192
xshige 0:c3fbb0514bfc 193 if(tmr.read() > 0.2) // sec
xshige 0:c3fbb0514bfc 194 {
xshige 0:c3fbb0514bfc 195 led4=!led4; //Show that we are alive
xshige 0:c3fbb0514bfc 196 tmr.reset();
xshige 0:c3fbb0514bfc 197 }
xshige 0:c3fbb0514bfc 198 }
xshige 0:c3fbb0514bfc 199 }