The goal of this project is to create a port extender so that a PC running behind a firewall can accept inbound TCP or UDP data.
Computers A & B are both behind firewalls - no inbound ports are open but outbound UDP/TCP traffic is free to flow.
An application running on A is trying to establish a connection to an application running on B but B's firewall prevents this connection from being established. Assume, for this example, that B is listening on port 2000 but that port 2000 is being blocked.
In order to get around this problem both A & B will establish outbound TCP/UDP connections with the Port Extender utility running on a central server (server). The appropriate ports are open on the server and it is able to accept inbound TCP/UDP connections.
The application running on A establishes a TCP/UDP connection with the Port Extender running on the server. The application running on B also initiates a TCP/UDP connection with the Port Extender.
The server acts as the conduit between A & B. When A transmits data to B, the data is initially received by the server and then the server tranmits it to B using the existing TCP/UDP connection between the server and B. Also, running on B is a small utility that receives the data from the server and then passes the data to the listening port (port 2000 in this example).
Outbound data from B is passed to the server and the server transmits it to A using the existing TCP/UDP connection with A.
In other words, rather than directly connecting A to B, both A & B establish outbound TCP/UDP connections with a server. The server forwards data from A to a utility listening on B and the utility forwards the data to the app listening on the blocked port. Outbound data from B is received by the server and then forwarded to A.
As far as the applications running on A and B are concerned, this is just an ordinary socket connection. The applications are completely unaware that the data is being routed through a server to bypass the firewall.
Port Extender must be written in C/C++ and you must be willing to fix any bugs in the product for six months. The deadline is negotiable - please let me know if you have any questions or can propose a better solution.
Note: The bid includes the development of the client utility mentioned above.
See attachment for Phase II
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
Port Extender will need to run on Windows (XP or 2000) for testing/debugging and then be deployed on either Windows or Linux. The client utility will only run on Windows (98/ME/2k/XP)