These types of errors are very hard for us to diagnose without having remote access to your machine. You are in the best position to analyze the problem. Your best approach is to carefully carry out the troubleshooting procedures described in TCP/IP Socket Issues (below). If that does not work then you should follow the second procedure Reproducing TCP/IP Issues to provide us with the necessary information to help you to fix it.
Troubleshooting TCP/IP Socket Issues [top]
This section shows you how to resolve TCP/IP Socket problems.
Get Some Background
You should have a good read of our transport section to understand the basics of TCP/IP and how HL7 is normally transmitted over this medium. Getting an understanding of this will make it much easier for you to diagnose problems.
Server Port Conflicts
Only one application at a time can listen on a given port number. If you pick a port number like 80 or 8080 (two ports commonly used by web servers) and you have a web server running on your machine, your HL7 server will throw some type of exception on start up because it will not be allowed to listen to the same port.
Ensure you are Connecting to an HL7 Server
If you are writing an HL7 client, be careful that you are actually connecting to an HL7 server. One problem we have seen was a customer thought they were connecting to a remote HL7 server but was in fact connecting to a web server running on the local machine. This was confusing because a web server will accept the HL7 message and generate an error response which an HL7 server will ignore. The web server will then break the TCP/IP connection.
Faulty LLP Implementations
The Lower Layer Protocol (LLP) is one of the most straightforward TCP/IP protocols in the world to implement. Unfortunately this does not stop some creative programmers from implementing it in their own special way.
The symptoms for when the LLP protocol has not been correctly implemented is when the HL7 Listener receives a connection from an HL7 client but does not seem to pick up any messages.
The best way to diagnose the problem is to follow the testing procedures outlined in the transport section of the manual with the MSOCS tool. This tool allows you to accept an arbitrary feed of TCP/IP data and then copy and paste the data into a file. This file can then be opened in a hexadecimal editor which you can easily assess if the LLP protocol has been incorrectly implemented. This process is described in detail in the transport section.
Note: For more information about LLP, see LLP – Lower Layer Protocol. Another tool that you may find useful is called Wireshark. Wireshark is a powerful tool used for protocol analysis and network troubleshooting. It is useful for testing the structure of different network protocols like TCP/IP and can be run on a variety of platforms such as Windows, Linux and OS X.
Reproducing TCP/IP Issues [top]
If the troubleshooting procedure does not work, your next option is to create a very simple program which can reliably reproduce the problem and arrange for it to be sent to us. A good approach is to:
- Start with your message definition file.
- Generate a standalone client or server application from it using the code generator.
- Modify the application to recreate the problem.
This is a fast and efficient way to create an example test program.
If this does not work, we can arrange a remote sesssion access to allow one of our support staff to examine your machine.