This is my first project here. Kind of an experiment / proof of concept / backup solution / last ditch attempt to recover from a programmer who has failed to deliver for a deadline. I can program, so all I'm after at this stage is for the basics as specified to be working well. UI tweaks etc can wait.
Language: [url removed, login to view] 2005 Express Edition
Skills: Requires a good working knowledge of TCP networking, stuff like non-blocking sockets, and gracefully handling things like missing connections. Not for the newbie, there's too many little traps.
Function: Imagine a spreadsheet with say 20 rows, and 3 columns. In the first column is a list of IP addresses. For each of these in turn: open a TCP connection on port 10001, issue the character "a" followed by a CR, get back a line of ascii data looking like: [variable length roughly this long] followed by CR LF and a ">" character. When the ">" is received, close the connection and insert the text between the  into the cell that's to the right of the IP address. If the text contains the string "hi" then tick a tickbox control that's in the third column (but don't un-tick it). Timeout if the operation exceeds 2 seconds per IP, instead inserting the text "NO CONNECTION". Loop indefinitely.
As a second part to this, if someone clicks on an IP address, temporarily interrupt the polling cycle (after the last poll) to connect to the clicked IP and send an "h" character followed by CR character. Get many lines of text (say 50) until a ">" character, displaying as it comes in. Display in a pop up window with a scrollable textarea that the user can select and copy from. If this connection is silent for more than two seconds (different from the above requirement), write "NO CONNECTION" into the text box. Resume the normal polling cycle after the ">" or timeout. One "Done" button to close this window (ideally allow more than one of these windows open at once).
Read the list of IPs from a text file on startup (just one address per line of format 0.0.0.0). Double click edits the IP (perhaps pop up a window so it doesn't upset polling while being edited). Write the list of IP addresses back out to the text file on application close.
Other requirements / notes:
- must not consume 100% CPU during operation
- all source must be provided, I can compile it
- needs to be completed "within a few days", fairly urgent
- give the windows generic names like "window 1" or whatever is easiest
- within the constraints above, single-threaded code is fine
- FYI if it helps, this is to help build an alarm monitoring application, and the devices being connected to are Lantronix X-ports.
- There may be further work available.
- If my bid target is unrealistic, don't be afraid to bid higher. I'm guessing $50 to $200, but there's not an option for that.