One option is to create a proxy server which allows your code to drop and reopen connections which are transparently connected to the clients. Basically something like:
server <--> proxy <--> clients
When you need to restart the server, just send the proxy a special message saying "buffer all client connections until the new server boots". Then kill the server and restart with new code. The server connects to the proxy and resumes talking to the clients who are none the wiser.
Another, much more drastic, option would be to use UDP sockets instead of TCP sockets. UDP sockets are connectionless and you can restart your server as much as you want without disturbing clients. However, UDP sockets require you to handle retransmission when packets are lost and don't guarantee ordered delievery of packets, so there's definitely a downside here.
-sam
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.