› Clovertech Forums › Read Only Archives › Cloverleaf › Cloverleaf › port question
I have an inbound tcp/ip thread set-up to listen on port 58013. The vendor is saying the tcp ack is coming to them on a different port (4769). Does the cloverleaf application control this or something else outside the application? We have sniffers on both ends and I need to know who to yell at with this problem 😈
see attachment.
thx,
Gary
Gary,
I believe the vendor is referring to the local port on their side, which would be different. When a TCP/IP connection is established, the client initiates the request to the server using a random available local port, and connects to the server on the server port specified. Cloverleaf leave is ack’ing back on the connection that the vendor application established with it. This is standard TCP/IP, so I think the vendor is somewhat confused.
Jim Cobane
Henry Ford Health
That is what I thought, but no one here at the office is listening to me!
Now the vendor wants me to change port on the CL side to 4769. OMG!! 👿 😈 😯
Gary,
I think you and the vendor need to decide who is the server (the side that is “listening” and waiting for a connection) and who is the client. It is the server side that determines which port number to use.
The client side will connect to the server at the server’s port number by using one of the client side ephemeral ports (and nobody cares what that port number is, except for the operating system which determines which port it’s going to use).
The port numbers in use for a given TCP connection are not the same on both ends.
Cheers.
CL is the server. I see the port 58013 in a listening state when I turn the thread on. So, then port 4769 is being provide by client correct?
Who came up with 58013 for the port on your side? Is that what you have in the thread configuration? That’s a number one would expect to be in the ephemeral range for a lot of systems.
This is all just speculation until you ask the vendor or your in-house tech support person for that system how they are expecting the two systems to communicate.
I know this can sound really complex, but it’s just like making a phone call. The server is sitting in their house by the phone waiting for someone to call. The server’s phone number is like it’s port number. The client wants to talk with the server so the client dials the server’s phone number. It doesn’t really matter what the client’s phone number is since the client is the one dialing the phone. It won’t work if they both dial the same number, and the client can’t connect to the server if the client doesn’t dial the correct number.
I came with port 58013 for the thread. I started with 58000 and have been working my way up on each new inbound connection.
The weird part is this integration was working just fine up until a few weeks ago. Now, no one seems to know what is going on. Talk to the network guys; not their problem. Talk to the receiving vendor; not them either. So, it must be the interface guys fault. 😈
I’ve learned more about tcp/ip this week then the semester class I took many moons ago. 😯
OK, brute force approach. Try the following CL thread configurations and see which will connect and show as “UP”:
1. Server/port 58013.
2. Server/port 4769
3. Client using the vendor system IP address/port 58013
4. Client using the vendor system IP address/port 4769.
thx, Chris will get that a try.
iedev:hci> netstat -a | grep 4769
tcp4
I am really sorry for beating this dead horse, but does anyone have any other thoughts of what I need to check in the CL application? I have about pull out the last of my hair out…
Have you tried turning up the noise on CL (EO config)? Or tried a completely different portnumber to see if that works?
Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands
Yes I tried both of those. The sending vendor was able to route their message feed to a local install of CL on their server. From there to route to hospital CL server. We were able to establish a connection after that. So, the problem seems to occur when communicate between hospital CL and sending vendor application.
The engine noise posts errors like this when when communicating between hospital CL and sending vendor application. :
[icl :tcpi:ERR /0: results_cmd:02/25/2010 09:43:43] write failed: Broken pipe
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Since there are some error had occured while attempted to send an Ack back to client
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] We try to process the command anyway but no further Ack will be send back to Client
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Received command: ‘results_xlate xrel_post’
[cmd :cmd :INFO/0:results_xlate:02/25/2010 09:43:43] Doing ‘xrel_post’ command with args ”
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Inrecoverable socket error. Closing connection.
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Receiving a command
[icl :tcpi:ERR /0: results_cmd:02/25/2010 09:43:43] write failed: Broken pipe
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Since there are some error had occured while attempted to send an Ack back to client
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] We try to process the command anyway but no further Ack will be send back to Client
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Received command: ”results_xlate’
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Cmd null in ”results_xlate’
[cmd :cmd :INFO/0: results_cmd:02/25/2010 09:43:43] Inrecoverable socket error. Closing connection.
Engine idle — 02/25/2010 09:43:53
[pdl :PDL :ERR /0:viewpoint_res:02/25/2010 09:50:18] read returned error 0 (Error 0)
[pdl :PDL :ERR /0:viewpoint_res:02/25/2010 09:50:18] PDL signaled exception: code 1, msg device error (remote side probably shut down)
Engine idle — 02/25/2010 09:50:33
Just muddy the waters. The sender vendor is saying they need to receive the tcp ack on the same port they are sending to. This does not make sense to me at all.
Hmmm… Really sounds like a networking/firewall problem. Something to do with port forwarding? I’m not a networking expert though.
And when you generate an ack in CL, it is (by default) send over the same port as the port that the original message came over. Strange…
Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands
There may, in fact, be a firewall issue, however there is this red flag:
The vendor said they can’t not input an IP, so I they can’t be the server.
If they have no provision for entering an IP address, THEY ARE THE SERVER. That means that you have to be the client.
Sorry I mistyped. They can enter IP address.