Unable to open a TCP socket to Exosite's servers


#1

Hi,

I am trying to open a TCP socket connection with a WiFi module with built-in TCP/IP stack (RN171). The module is configured with Exosite’s server IP as 52.8.0.240 and Port as 80, DNS name is m2.exosite.com

The WiFi module associates with a router with internet connectivity, But nothing happens thereafter. I tried sending POST request as given in Exosite’s documentation but didn’t get any response. I suspect that TCP socket is not opening.

Please suggest how I can open a TCP socket and test it. I started this exercise after sending data successfully to One Platform through Exoline utility.


#2

Hi @Prakash,

Are there any error messages that you can expose? Are there any stack-traces to investigate? What do see in lieu of a response from our sever? Do you have any visibility into the TCP packets that you are sending and receiving?

Writing in C and on a embedded device is a bit over my head, but what happens if you just use sys/socket to try and open a socket with our server?

Thanks,
-Martin


#3

Looks like my router was the issue. I replaced it and was able to open a TCP socket. But still havn’t got complete success.
Please see what I am sending to Exosite Server:
GET /onep:v1/stack/alias?Temp HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: CIK
Accept: application/x-www-form-urlencoded; charset=utf-8

Response from Exosite:
HTTP/1.1 200 OK
Date: Mon, 17 Apr 2006 11:58:20 GMT
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Server: IPWEBS/1.4.0
Content-Length: 477
Content-Type: text/html

You can see wrong date time stamp in the response. I am not able to read data using GET or push data using POST query. Please help me find the reason of getting wrong response, correct me if I am using wrong syntax/settings.
Also the TCP socket connection lasts for 10 seconds only. I have configured my device to work infinetly, so is Exosite host closing the connection?


#4

Are you certain that response is from us? That response’s body appears to be an HTML document, which IIRC is not how we respond to a read call for a given dataport.

We need to verify that what you think you are sending, is what your machine is really sending. Any way that you can expose what or how you are sending your message to a greater degree?


#5

That response seems to be coming from my 3G data card connected to my Router. But since I was getting TCP socket opening success with Exosite, I thought it must be coming from Exosite server.
I need to have a method where I can see the data packets coming from Exosite server. Do you have any tool in mind? I am trying to send data from my WiFi module which is connected to Router with internet connectivity.


#6

I think the way I would go about this would be to try and use Wire Shark. From what I remember about your configuration, setting Wire Shark up would be involved.

Could your 3G card have a captive portal? What is in the HTML document that it returns?

What debugging information do you have access to?

Until your messages reach our platform, I will have extremely low visibility into what your device is sending.


#7

Hi Martin,

Unfortunately I don’t have the proper wire shark logs yet. But I wish to elaborate so that you will have better understanding about what I am trying to do.
I downloaded a freeware and established TCP socket connection with Exosite server ( IP: 52.8.0.240, Port: 80). Then I sent POST request as per the HTTP API given in example Python script. I got HTTP 204 response and data got posted successfully on the portal.
Now I copied the same POST request and tried to send it from my device by establishing socket connection then I got BAD request response. I am not sure if this response is from Exosite server because I am not able to see remote ip into my wire shark logs.
Is there any method which can tell me if TCP socket on Exosite server is opened or not? How can I verify that? I don’t have much access to debug information since the device I am using is command based WIFi module with built in TCP/IP stack.


#8

The best method is going to be to verify the connection locally. The methodology in writing and reading a data back, that you used with the freeware, is an excellent way to prove connectivity.

Is there any documentation around the WiFi module you are using? Is there any way to get information from it?

Is is possible for you to share your Pcap files with us? If you wish to do so privately, feel free to open a ticket with us.

Thanks,
-Martin


#9

Hi Martin,

Sorry for the delayed response. I was busy trying a lot of things and finally I am successful in sending data to Exosite portal using my device. I have observed 2 things:

  1. Sometimes during my morning time ( My location is Mumbai, India) I face connection failure while opening TCP socket with Exosite portal. Has anybody else experienced it? What could be the possibility?
  2. I tried sending 1 KB text file using “string” dataport but I received only 500 bytes on my Exosite account. So is there any data limit that we can send to the portal?
  3. I also want to have a method of finding the time of my data to reach to the Exosite server.

Please try to answer my queries.

Thanks,
Prakash


#10

Hmm, that sounds like that could be problem with your connectivity to the internet, especially if it is that regular. We have other users from India, but they have not mentioned anything like you have described.

There is a limit to the size that a single datapoint can be, and it should be 64KB. Are you sure that you have your complete file in your message? It the datapoint that is stored consistently 500 bytes?

You should just be able to ‘read’ the value back if you want to know the time that the data was stored.