"Silent" IP connections?
annuello
Junior Member
Is there a way to use IP_CLIENT_OPEN() so that successful IP connects (& disconnects) operate in a "silent" mode? As in, when I telnet into my master and issue the "msg on" command, I get several lines reporting to me that my IP connection opened & closed okay. E.g.
I figured there must be a way, since I've also got RMS on the same master and it never appears in my telnet sessions unless my RMS server is down or the RMS module can't make the connection. I presume is uses the i!-ConenctLinxEngineMod.tko to handle the IP connection to the server, so perhaps the magic answer is hiding inside that .tko file.
Roger McLean
Swinburne University
Welcome to NetLinx v3.21.354 Copyright AMX Corp. 1999-2006 >msg on Extended diagnostic information messages turned on. >(0949642087) Connected Successfully (0949642088) CIpEvent::OnLine 0:11:12 (0949642592) Exiting TCP Read thread - closing this socket for local port 11 (0949642593) CIpEvent::OffLine 0:11:12 (0949662082) Connected Successfully (0949662083) CIpEvent::OnLine 0:11:12 (0949662586) Exiting TCP Read thread - closing this socket for local port 11 (0949662587) CIpEvent::OffLine 0:11:12 msg off Extended diagnostic information messages turned off. >My IP code is polling another device every 20 seconds or so. The MSG ON info is great for development & debugging, but once everything is working okay I'd rather set my code to a "silent" mode which only reports problems with the IP connections, not success as well. I'd prefer this change to be dynamic rather than compile time, but would be happy for either solution. With a 20 second poll, you can imagine what a pain it would be trying to debug other devices/code on the master.
I figured there must be a way, since I've also got RMS on the same master and it never appears in my telnet sessions unless my RMS server is down or the RMS module can't make the connection. I presume is uses the i!-ConenctLinxEngineMod.tko to handle the IP connection to the server, so perhaps the magic answer is hiding inside that .tko file.
Roger McLean
Swinburne University
Comments
-
I've never used RMS but can only assume it's a maitained IP connection otherwise I would think you would see all the connection messages. What type of device are you polling every 20 seconds? Is it using HTTP protocol?
-
Hmmm... Perhaps you are right with RMS (or i!-ConnectLinxEngineMod) using a maintained connection. Perhaps someone at AMX can confirm that.
The device is an application running on a PC, and I'm using HTTP to connect to it. As such, I can't really see how I can hold the connection open to the device since at the end of an HTTP transaction you are supposed to disconnect. -
Yeah, HTTP will drop the connection automatically even with "KEEP_ALIVE" or "PERSISTANT" called in the GET command. Does it have to update/check or poll every 20 seconds? Could it be longer?
-
Unfortunately, a poll period longer than 20 seconds would be unacceptable. I'm quite happy with the ability to poll devices via IP. I was just looking for a way to silence the usual "okay" case. If it doesn't exist, I suppose I will just have to continue to ignore the online/offline messages when using telnet.
-
Help
Did you ever comes across Connection Refuse?
I always meet up with
IPSocketManConnectTask - Connection Refuse problem... why this thing happen?
This is the most severe problem once it encounter during runtime. You cannot do anything until reset the master controller. How could we overcome this issue? Is there a way to force open the port?
I'm using IP connection for most of the device i had when there is network port available. Even the kramer switcher....comes with Lanport serial convertor meet the same problem.
I had tried to open the port without closing it, however it still fail at certain time during runtime. Once the port fail to open or connection refuse. The only solution is the reset the switcher or the master controller.
Soon i had got the idea from a programmer to do Timeline event. By open and closing it at certain interval. This idea seems work. Yet this does not get rid of the problem. By introducing a timeline to open and closing the port seems engage higher chances to fail in the connection.
Anyone with a good suggestion to overcome this problem. -
There is a definite issue in the IP libraries that AMX uses where the online and offline events are not quite synced with whether the port is fully connected or disconnected. You have to wait a good 10 seconds after an offline event, for example, before attempting to re-open the same port, or you will get a "port in use" error. My guess is there is still some housekeeping to be done after the disconnect before the port is actually ready to be used again.
-
But this willl be a great problem to the user.....
Most of the system installed are for the goverment meeting and boardroom...
10 second of disconnected line was real bad.....and it reli jeopardise the image of the product.
As they highly regards it as one of the most reliable....piece of equipment....
No down time is expected. Maybe there is a way to overcome the re-connection issue.
Regards
Alvin -
alvinyow wrote:
I had this happen today as a matter of fact. I have two 8 port MOXA Serial Severs on a job that handle all the serial ports I need to communicate with besides the 7 the master can handle plus a couple comm 2's. I was trying to set up comms w/ the first server but put in the IP address of the second server whose ports weren't configured in the same range. In short I was trying to open comms on the 1st server port 4661 but actually was connecting to the 2nd server whose ports were set default at 4001-4008. Major brain fart!Did you ever comes across Connection Refuse?
I always meet up with
IPSocketManConnectTask - Connection Refuse problem... why this thing h
Check your set up an make sure your IP and ports are correct.
alvinyow wrote:
I'm not sure if yor're talking HTTP but if it's HTTP open the connection and send your GET, use a variable in your ONLINE & OFFLINE & ONERROR event handlers to track whether you're on or off line. If you need to send more requests use the variable to determine the timing.I had tried to open the port without closing it, however it still fail at certain time during runtime. Once the port fail to open or connection refuse. The only solution is the reset the switcher or the master controller.
Soon i had got the idea from a programmer to do Timeline event. By open and closing it at certain interval. This idea seems work. Yet this does not get rid of the problem. By introducing a timeline to open and closing the port seems engage higher chances to fail in the connection.
if(!nIPDev_Online && nOtherRequestPending)
{
//send next request
}
If it's not HTTP most devices can maintain the connection indefinitely and you only need to put a re-connect function call in the offline handler to re-connect you should the connection drop. -
I've been doing a lot more IP-based communications as of late, and have noted a couple things:
On a simple IP_CLIENT connection that does a GET to log some stuff to a database via a PHP application, the online/offline trap I set up to chew through and send buffer data worked flawlessly for almost a month, logging almost 2000 events in that time. Then, one day, one or both of the "variable = 1" statements in the Offline event failed to trigger, and the logging stopped. All I had to do to get it going again (and flush the buffer which was full and holding the last 30 or so events), was go into debug and change one of the two variable values. It's been running fine again for 3 more days now. And now that I'm posting about it, I've just realized that I'm not trapping and handling the possibility that the PHP server is not responding. I think I just solved that one.
On a fairly complex IP_SERVER setup that acts as a gateway to a PHP-based web interface, I've found that the controller is just too slow to respond to more than one connection per web page load. I would much rather be able to put the results of 2 different calls to the controller on one web page, but the 2nd call invariably fails. (And here I thought using Filemaker as a back-end to a PHP-based web app was slow!) With an NI-3100 controller data is usually returned and the connection is closed in well under a second, but it takes 2-3 seconds before I can get another connection. Of course there's a chance this could be due to poor programming, but it sounds just like what dhawthorne mentioned.
One other note, for IP_CLIENT connections, I've programmed a Proof-of-concept round-robin pool of IP connections that can be used. I defined 4 IP devices, put them in an array, and then used a 4-character buffer and GET_BUFFER_STRING to grab the index of the first available IP device from the buffer. When the OFFLINE event happens, it puts it's index number back into the buffer, at the end. With a pool of IP devices, you can make some pretty rapid IP transactions. It might be a good workaround to the problem dhawthorne noted. I haven't put it into production yet, but I might try something similar for my IP_SERVER problem stated above.
The chattiness of the connections doesn't bother me. There are lots of good tools out there for log parsing and analysis. -
alvinyow wrote:
I had this happen today as a matter of fact. I have two 8 port MOXA Serial Severs on a job that handle all the serial ports I need to communicate with besides the 7 the master can handle plus a couple comm 2's. I was trying to set up comms w/ the first server but put in the IP address of the second server whose ports weren't configured in the same range. In short I was trying to open comms on the 1st server port 4661 but actually was connecting to the 2nd server whose ports were set default at 4001-4008. Major brain fart!
I'm using serial convertor too. I had 4 pieces of two port serial-ip convertor. So I'm expanding the serial port to total 9 port while i'm using NI900 as the master controller.
Check your set up an make sure your IP and ports are correct.
All the port are correctly configure and set at the right port 100 and 101. Since i'm using 4 serial devices. So i need to define 4 diff IP for each device. The port is factory set at 100 for port 1 and 101 for port 2.
alvinyow wrote:
I'm not sure if yor're talking HTTP but if it's HTTP open the connection and send your GET, use a variable in your ONLINE & OFFLINE & ONERROR event handlers to track whether you're on or off line. If you need to send more requests use the variable to determine the timing.
I'm not using HTTP. I used to check the status of the device in ONLINE & OFFLINE & ONERROR event handler. Last year i use this technique to poll the status.....and the re-connection problem still the real issue.
Currently, I'm using timeline to do open and closing port at certain interval. The process seems work and today i had not meet any re-connection issue. Maybe because i reboot the master so many times during programming the master. So the problem did not surface.
if(!nIPDev_Online && nOtherRequestPending)
{
//send next request
}
If it's not HTTP most devices can maintain the connection indefinitely and you only need to put a re-connect function call in the offline handler to re-connect you should the connection drop.
You mean just do an open port cmd and use the ONLINE & OFFLINE & ONERROR event handler to maintain the reconnection? -
alvinyow wrote:
If we're talking HTTP then yeah, open a connection when you trigger the online event send your first request (GET or POST) and set your var to 1. The server will respond to your request and send some sort of a response and close the connection. This will trigger and off_line event where you set your var to 0. Now that your var is 0 if you have more traffic to send do another IP_CLIENT_OPEN and when your get the online event from that send your next request........and so on...You mean just do an open port cmd and use the ONLINE & OFFLINE & ONERROR event handler to maintain the reconnection?
Categories
- All Categories
- 2.5K AMX General Discussion
- 922 AMX Technical Discussion
- 514 AMX Hardware
- 502 AMX Control Products
- 3 AMX Video Distribution Products
- 9 AMX Networked AV (SVSI) Products
- AMX Workspace & Collaboration Products
- 3.4K AMX Software
- 151 AMX Resource Management Suite Software
- 386 AMX Design Tools
- 2.4K NetLinx Studio
- 135 Duet/Cafe Duet
- 248 NetLinx Modules & Duet Modules
- 57 AMX RPM Forum
- 228 MODPEDIA - The Public Repository of Modules for Everyone
- 943 AMX Specialty Forums
- 2.6K AMXForums Archive
- 2.6K AMXForums Archive Threads
- 1.5K AMX Hardware
- 432 AMX Applications and Solutions
- 249 Residential Forum
- 182 Tips and Tricks
- 146 AMX Website/Forums
