tcp socket client

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPSocket_HelloWorld by Seeed

Committer:
liutaitsung
Date:
Sun Sep 11 06:20:58 2016 +0000
Revision:
18:2eaa23c78a5b
Parent:
17:0d74817db362
TCP client

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liutaitsung 18:2eaa23c78a5b 1 //
liutaitsung 18:2eaa23c78a5b 2 //
liutaitsung 18:2eaa23c78a5b 3 //
liutaitsung 18:2eaa23c78a5b 4
donatien 0:bb128f0e952f 5 #include "mbed.h"
donatien 0:bb128f0e952f 6 #include "EthernetInterface.h"
donatien 0:bb128f0e952f 7
liutaitsung 18:2eaa23c78a5b 8 //#define USE_DHCP
liutaitsung 18:2eaa23c78a5b 9
liutaitsung 18:2eaa23c78a5b 10
liutaitsung 18:2eaa23c78a5b 11 const char cip[] = "192.168.2.89";
liutaitsung 18:2eaa23c78a5b 12 const char cmask[] = "255.255.255.0";
liutaitsung 18:2eaa23c78a5b 13 const char cgateway[] = "192.168.2.1";
liutaitsung 18:2eaa23c78a5b 14
liutaitsung 18:2eaa23c78a5b 15 //const char* ECHO_SERVER_ADDRESS = "192.168.2.2";
liutaitsung 18:2eaa23c78a5b 16 const char* ECHO_SERVER_ADDRESS = "192.168.2.88";
liutaitsung 18:2eaa23c78a5b 17 const int ECHO_SERVER_PORT = 7;
liutaitsung 18:2eaa23c78a5b 18
liutaitsung 18:2eaa23c78a5b 19
liutaitsung 18:2eaa23c78a5b 20 int iCount = 0;
liutaitsung 18:2eaa23c78a5b 21 #define ICOUNT_MAX 10000
liutaitsung 18:2eaa23c78a5b 22
liutaitsung 18:2eaa23c78a5b 23
liutaitsung 18:2eaa23c78a5b 24 //
liutaitsung 18:2eaa23c78a5b 25 //
liutaitsung 18:2eaa23c78a5b 26 //
liutaitsung 18:2eaa23c78a5b 27
liutaitsung 18:2eaa23c78a5b 28 Serial pc(USBTX, USBRX);
liutaitsung 18:2eaa23c78a5b 29
liutaitsung 18:2eaa23c78a5b 30
liutaitsung 18:2eaa23c78a5b 31 //
liutaitsung 18:2eaa23c78a5b 32 //
liutaitsung 18:2eaa23c78a5b 33 //
liutaitsung 18:2eaa23c78a5b 34
liutaitsung 18:2eaa23c78a5b 35 int main()
liutaitsung 18:2eaa23c78a5b 36 {
liutaitsung 18:2eaa23c78a5b 37 pc.baud(115200);
donatien 0:bb128f0e952f 38
liutaitsung 18:2eaa23c78a5b 39 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 40 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 41 pc.printf("--------------------------------\n");
liutaitsung 18:2eaa23c78a5b 42 pc.printf("Program starts ...\n");
liutaitsung 18:2eaa23c78a5b 43
donatien 0:bb128f0e952f 44
liutaitsung 18:2eaa23c78a5b 45 EthernetInterface eth;
liutaitsung 18:2eaa23c78a5b 46
liutaitsung 18:2eaa23c78a5b 47 #ifdef USE_DHCP
liutaitsung 18:2eaa23c78a5b 48 //eth.init(); //Use DHCP
liutaitsung 18:2eaa23c78a5b 49 int init_rtn = eth.init(); //Use DHCP
liutaitsung 18:2eaa23c78a5b 50 #else
liutaitsung 18:2eaa23c78a5b 51
liutaitsung 18:2eaa23c78a5b 52 // fix ip address
liutaitsung 18:2eaa23c78a5b 53
liutaitsung 18:2eaa23c78a5b 54 int init_rtn = eth.init(cip, //const char * ip,
liutaitsung 18:2eaa23c78a5b 55 cmask, //const char * mask,
liutaitsung 18:2eaa23c78a5b 56 cgateway //const char * gateway
liutaitsung 18:2eaa23c78a5b 57 );
liutaitsung 18:2eaa23c78a5b 58
liutaitsung 18:2eaa23c78a5b 59 #endif
liutaitsung 18:2eaa23c78a5b 60
liutaitsung 18:2eaa23c78a5b 61
liutaitsung 18:2eaa23c78a5b 62 pc.printf("init() return : %d\n", init_rtn);
liutaitsung 18:2eaa23c78a5b 63
liutaitsung 18:2eaa23c78a5b 64 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 65 pc.printf(" wait for ethernet connect()......\n");
liutaitsung 18:2eaa23c78a5b 66 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 67
liutaitsung 18:2eaa23c78a5b 68 int connect_rtn = eth.connect();
liutaitsung 18:2eaa23c78a5b 69 pc.printf("connect() return : %d\n", connect_rtn);
emilmont 7:65188f4a8c25 70
liutaitsung 18:2eaa23c78a5b 71 //eth.connect();
liutaitsung 18:2eaa23c78a5b 72 pc.printf("\nClient IP Address is %s\n", eth.getIPAddress());
liutaitsung 18:2eaa23c78a5b 73
liutaitsung 18:2eaa23c78a5b 74 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 75 pc.printf(" connect to tcp socket server......\n");
liutaitsung 18:2eaa23c78a5b 76 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 77
liutaitsung 18:2eaa23c78a5b 78
liutaitsung 18:2eaa23c78a5b 79 // Connect to Server
liutaitsung 18:2eaa23c78a5b 80 TCPSocketConnection socket;
liutaitsung 18:2eaa23c78a5b 81
liutaitsung 18:2eaa23c78a5b 82 send_loop:
liutaitsung 18:2eaa23c78a5b 83
liutaitsung 18:2eaa23c78a5b 84 while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0)
liutaitsung 18:2eaa23c78a5b 85 {
liutaitsung 18:2eaa23c78a5b 86 pc.printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
liutaitsung 18:2eaa23c78a5b 87 wait(2);
emilmont 7:65188f4a8c25 88 }
liutaitsung 18:2eaa23c78a5b 89
liutaitsung 18:2eaa23c78a5b 90 pc.printf("Connected to Server at %s\n",ECHO_SERVER_ADDRESS);
liutaitsung 18:2eaa23c78a5b 91 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 92
liutaitsung 18:2eaa23c78a5b 93 // Send message to server
liutaitsung 18:2eaa23c78a5b 94 char hello[] = "Hello World";
liutaitsung 18:2eaa23c78a5b 95 pc.printf("Sending message to Server : '%s' \n",hello);
liutaitsung 18:2eaa23c78a5b 96
liutaitsung 18:2eaa23c78a5b 97 int isend_all_rtn = socket.send_all(hello, sizeof(hello) - 1);
liutaitsung 18:2eaa23c78a5b 98 pc.printf("chars send : %d\n", isend_all_rtn);
liutaitsung 18:2eaa23c78a5b 99 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 100
liutaitsung 18:2eaa23c78a5b 101 // Receive message from server
liutaitsung 18:2eaa23c78a5b 102 char buf[256];
liutaitsung 18:2eaa23c78a5b 103 int n = socket.receive(buf, 256);
liutaitsung 18:2eaa23c78a5b 104 buf[n] = '\0'; // end of line
liutaitsung 18:2eaa23c78a5b 105
liutaitsung 18:2eaa23c78a5b 106 pc.printf("Received message from server: '%s'\n", buf);
donatien 0:bb128f0e952f 107
liutaitsung 18:2eaa23c78a5b 108 // Clean up
liutaitsung 18:2eaa23c78a5b 109 //socket.close();
liutaitsung 18:2eaa23c78a5b 110 int iclose = socket.close();
liutaitsung 18:2eaa23c78a5b 111 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 112 pc.printf("sock.close return : %d\n", iclose);
liutaitsung 18:2eaa23c78a5b 113 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 114
liutaitsung 18:2eaa23c78a5b 115 iCount++;
liutaitsung 18:2eaa23c78a5b 116 pc.printf("send # : %d\n", iCount);
donatien 5:01f6c3e112af 117
liutaitsung 18:2eaa23c78a5b 118 if ( iCount < ICOUNT_MAX )
liutaitsung 18:2eaa23c78a5b 119 {
liutaitsung 18:2eaa23c78a5b 120 wait(3);
liutaitsung 18:2eaa23c78a5b 121
liutaitsung 18:2eaa23c78a5b 122 goto send_loop;
liutaitsung 18:2eaa23c78a5b 123
liutaitsung 18:2eaa23c78a5b 124 }
liutaitsung 18:2eaa23c78a5b 125
liutaitsung 18:2eaa23c78a5b 126
liutaitsung 18:2eaa23c78a5b 127 eth.disconnect();
liutaitsung 18:2eaa23c78a5b 128 int idisconn = eth.disconnect();
liutaitsung 18:2eaa23c78a5b 129
liutaitsung 18:2eaa23c78a5b 130 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 131 pc.printf("disconnect return : %d\n", idisconn);
liutaitsung 18:2eaa23c78a5b 132
liutaitsung 18:2eaa23c78a5b 133
liutaitsung 18:2eaa23c78a5b 134 pc.printf("--------------------------------\n");
liutaitsung 18:2eaa23c78a5b 135 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 136 pc.printf("\n");
liutaitsung 18:2eaa23c78a5b 137
liutaitsung 18:2eaa23c78a5b 138 while(true) {}
donatien 0:bb128f0e952f 139 }
yihui 17:0d74817db362 140
yihui 17:0d74817db362 141 // override the default weak function to provide a specific mac address
yihui 17:0d74817db362 142 extern "C" void mbed_mac_address(char *mac)
yihui 17:0d74817db362 143 {
liutaitsung 18:2eaa23c78a5b 144 mac[0] = 0x00;
liutaitsung 18:2eaa23c78a5b 145 mac[1] = 0x50;
liutaitsung 18:2eaa23c78a5b 146 mac[2] = 0x56;
liutaitsung 18:2eaa23c78a5b 147 mac[3] = 0xC0;
liutaitsung 18:2eaa23c78a5b 148 mac[4] = 0x00;
yihui 17:0d74817db362 149 mac[5] = 0xAB;
yihui 17:0d74817db362 150 };