WebSocket client library

Revision:
12:1f6b9451a608
Parent:
10:4f02275c34ee
Child:
13:3b058372cad9
--- a/Websocket.cpp	Thu Aug 25 06:11:04 2011 +0000
+++ b/Websocket.cpp	Fri Aug 26 09:17:30 2011 +0000
@@ -9,15 +9,6 @@
     fillFields(wifi_use, url);
 }
 
-
-Websocket::Websocket(char * url) {
-    wifi_use = false;
-    eth_use = true;
-    eth_connected = false;
-    response_server_eth = false;
-    fillFields(wifi_use, url);
-}
-
 void Websocket::fillFields(bool wifi, char * url) {
     char *res = NULL;
     char *res1 = NULL;
@@ -61,6 +52,7 @@
             //if we use ethernet, we must decode ip address or use dnsresolver
             if (!wifi) {
                 strcpy(buf, res);
+                
                 //we try to decode the ip address
                 if (buf[0] >= '0' && buf[0] <= '9') {
                     res = strtok(buf, ".");
@@ -72,13 +64,7 @@
                         i++;
                     }
                     server_ip = IpAddr(ip[0], ip[1], ip[2], ip[3]);
-                    printf("server=%i.%i.%i.%i\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
-                }
-                //we must use dnsresolver to find the ip address
-                else {
-                    DNSResolver dr;
-                    server_ip = dr.resolveName(buf);
-                    printf("server=%i.%i.%i.%i\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
+                    printf("server without dns=%i.%i.%i.%i\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
                 }
             }
         }
@@ -86,6 +72,18 @@
 }
 
 
+Websocket::Websocket(char * url) {
+    wifi_use = false;
+    server_ip = NULL;
+    eth_use = true;
+    eth_writeable = false;
+    eth_readable = false;
+    eth_connected = false;
+    response_server_eth = false;
+    fillFields(wifi_use, url);
+}
+
+
 
 
 bool Websocket::connect() {
@@ -136,8 +134,13 @@
             printf("Error %d in setup.\r\n", ethErr);
             return false;
         }
-
-        printf("setup OK\r\n");
+        
+        //we must use dnsresolver to find the ip address
+        if (server_ip == NULL) {
+            DNSResolver dr;
+            server_ip = dr.resolveName(ip_domain);
+            printf("server with dns=%i.%i.%i.%i\r\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
+        }
 
         IpAddr ipt = eth.getIp();
         printf("mbed IP Address is %d.%d.%d.%d\r\n", ipt[0], ipt[1], ipt[2], ipt[3]);
@@ -146,7 +149,7 @@
         Host server (server_ip, atoi(port));
         TCPSocketErr bindErr = sock.connect(server);
         if (bindErr) {
-            printf("binderr: %d", bindErr);
+            printf("binderr: %d\r\n", bindErr);
             return false;
         }
 
@@ -156,7 +159,7 @@
 
         while (true) {
             Net::poll();
-            if (tmr.read() > 0.1) {
+            if (tmr.read() > 0.01) {
                 tmr.reset();
                 if (eth_connected) {
                     switch (i) {
@@ -324,12 +327,8 @@
     if (e == TCPSOCKET_CONNECTED) {
         eth_connected = true;
         printf("TCP Socket Connected\r\n");
-    } 
-    else if (e == TCPSOCKET_WRITEABLE) 
-    {
-    } 
-    else if (e == TCPSOCKET_READABLE) 
-    {
+    } else if (e == TCPSOCKET_WRITEABLE) {
+    } else if (e == TCPSOCKET_READABLE) {
         int len = sock.recv(eth_rx, 512);
         eth_rx[len] = 0;
         if (!response_server_eth) {
@@ -340,9 +339,7 @@
             if (found != string::npos)
                 response_server_eth = true;
         }
-    } 
-    else 
-    {
+    } else {
         printf("TCP Socket Fail\r\n");
         eth_connected = false;
     }