Wikipedia:Reference desk/Archives/Computing/2006 November 12

From Wikipedia, the free encyclopedia
Computing desk
< November 11 << Oct | November | Dec >> November 13 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


November 12[edit]

Ubuntu Questions[edit]

I am a Linux "noob" so excuse my ignorance.

  • Firefox 2.0 came out and I have installed it on my XP box, but the repositories have not been updated for Ubuntu. What gives? Why can't I install things like I do in XP?
  • In a related question, where are the programs I install scattered about the file system? In Windows everything is in C:Program Files, is there no analagous folder in Ubuntu? Why am I able to launch programs via bash when the executables are not in the working directory?

Thanks. 65.7.166.232 03:05, 12 November 2006 (UTC)[reply]

To the second question: bash looks for executables in places defined in the environment variable path. Type echo $PATH and you'll see what it contains. Most executables are located in /usr/bin and /usr/local/bin. –Mysid 05:32, 12 November 2006 (UTC)[reply]
  • You can download Firefox binaries and install them under your home directory. --Kjoonlee 07:28, 12 November 2006 (UTC)[reply]
You can install things in Ubuntu like in Windows, it's just that it's different. Programs do not have their own folder in some program files folder, but instead their binaries are in /usr/bin, libraries in /usr/lib, shared files in /usr/share and so on. The reason you probably can't install Firefox 2.0 in Ubuntu is because you are using Ubuntu 6.06 (Dapper). Ubuntu 6.10 recently came out, so you should upgrade. Ubuntu 6.10 has Firefox 2.0. About your second question, there are search paths to tell GNU/Linux where to find the programs. The default ones are probably /bin, /usr/bin, and some others. I hope that's answered your two questions. --wj32 talk | contribs 07:40, 12 November 2006 (UTC)[reply]
Actually, a lot of people have say that they've been installing Edgy and even though it said FF2 (beta?) was installed, the actual program was 1.5, possibly because of the weird FF2 beta, or because Ubuntu was trying to rush it into the release and they screwed something up. It seems to have rectified now though, and my last Ubuntu and Xubuntu disks both have a proper FF2 installed. Here's a good document that explains the Linux file structure.  freshofftheufoΓΛĿЌ  11:56, 12 November 2006 (UTC)[reply]

I haven't installed Edgy because I heard some people were having problems. I'm waiting for that to get settled out. Also, why should I have to upgrade to get a new version of FF? What if I didn't want to upgrade because Dapper is going to be supported for a longer time? If I install manually, won't it confuse synaptic in the future (because it won't know that I installed it myself)? 65.7.166.232 16:23, 12 November 2006 (UTC)[reply]

Well, if you install it manually, you'll probably be installing it under either $HOME or /usr/local/. Regular Ubuntu packages get installed to /usr/, not /usr/local/, so synaptic won't notice. --Kjoonlee 17:09, 12 November 2006 (UTC)[reply]
Yep. Edgy Eft is a hot-off-the-presses release, so I would say don't upgrade. It's not really necessary to, and I sure haven't. I prefer stability over cutting-edge. Cephyr 03:35, 15 November 2006 (UTC)[reply]

According to this wiki post [1], Ubuntu doesn't update the packages unless a critical security update is present. Hope that helps. --inky 07:10, 14 November 2006 (UTC)[reply]

Immediate Access Memory[edit]

What is an Immediate Access Memory? Is it the same thing as a processor register? If not, then what's the difference between them?

User: The Anonymous One

I think by Immediate Access Memory you mean the CPU caches, which are used to store recently/frequently accessed data from memory (accessing the RAM is slower than accessing the CPU cache). Processor registers are super-fast things to store values in (more specifically, a 32-bit processor can store 32-bit numbers in its processors). No, they aren't the same. --wj32 talk | contribs 07:43, 12 November 2006 (UTC)[reply]
Registers are very small pieces of memory embedded in the CPU that are used to hold values being operated upon at the time.. for example in many architectures register A is the accumulator and may be where the output of ADD might go for example. It's basically for holding values that the processor has to remember for a very short time - not for actually carrying out its instructions (those are inline and require no separate memory) but for "in between" instructions. Registers are sometimes used to hold a memory address just before a request to main memory. Cache is for all sorts of data, usually data structures like lists. Frequently used data is stored in cache. If you had a list of integers and you wanted to add one to each integer, a good place to put that list while you work on it would be in processor cache. See Processor_register, CPU cache, and Memory hierarchy --frothT C 03:24, 13 November 2006 (UTC)[reply]

how to publish a website[edit]

i have created a website in microsoft frontpage but how do you publish it on the web?Mi2n15 08:22, 12 November 2006 (UTC)[reply]

Mi2n15, you need to get someone/some company to host your website, because web space isn't free. Try 50Webs or something similar which has no ads. You will then have to manually upload your website's files. --wj32 talk | contribs 09:05, 12 November 2006 (UTC)[reply]

will yahoo/google host it if i allow them to put their ads on my siteMi2n15 09:23, 12 November 2006 (UTC) 50webs is a pay site i was looking for something free because this is my first attemptMi2n15 09:30, 12 November 2006 (UTC)[reply]

50Webs is free, just look for it. Yahoo puts ads on free plans... --wj32 talk | contribs 09:38, 12 November 2006 (UTC)[reply]

will i be paid by yahooMi2n15 13:10, 12 November 2006 (UTC)[reply]

Probably not, and since when was Google/Yahoo a free web host? Splintercellguy 04:11, 13 November 2006 (UTC)[reply]
Consider changing plans. Microsoft FrontPage has earned a reputation for creating horrible web pages that fail to comply with numerous web standards and so cause problems for your visitors. Is that the way you want to world to perceive you? I hope not! Furthermore, it is being discontinued at the end of this year. For a cross-platform standards-compliant free alternative, try Nvu.
If this is a small personal site, chances are your ISP provides free hosting as part of your service. Otherwise, find yourself a hosting service. Note that use of FrontPage must be specially supported by the service, so limits your choices. Some sites that may help you are
Indeed, 50Webs does have a free, ad-free plan, and you might also investigate AtSpace as an alternative. TANSTAAFL applies, as always. Should you want your own domain name, and if the host does not offer it, you can try something like GoDaddy; either way there will be a small annual fee. --KSmrqT 00:21, 15 November 2006 (UTC)[reply]

Programming[edit]

Two very general questions. First, is there anything like "benchmarking" to test to efficiency of procedures? I imagine it wouldn't be very possible nor useful for complex programs, but when there's a few choices of procedure (as a very bad, general example, if vs. case, or more likely something like drawThinLine() vs. drawLine(thickness=1)), some kind of standardized speed testing would be great, wouldn't it?

Secondly, and related to the first, this scenario: A program/procedure is created that performs its function quickly, efficiently, and bug-free. A new feature is added to a different, similar program/procedure that isn't quite as well-programmed, but it works, and so now there's a choice between two different programs/functions, and someone could be justified for choosing to use either. Within the realm of open source and free programs, is there any way/are there any projects that try to get rid of this silly conflict of interests? I've heard people say often that there's no "one best program" for any problem, but if you reduce a program to its parts, isn't there? Is there really no "one best procedure" for drawing a single, non-aliased, flat-colored box in a non-accelerated environment?  freshofftheufoΓΛĿЌ  11:36, 12 November 2006 (UTC)[reply]

As far as I know there is no standard method of benchmarking procedures. For graphics we have frames per second, for instance, so I guess you could use timing for your procedures too. If you hold the timestamp of when the function was accessed as well as the timestamp for when the function was exited, then you can calculate the time that function took to process and compare it to the rest of the program to see which parts are causing the most overheads.
As for competing programs, I think that competition drives up standards. A good example of this is the Internet Explorer/Firefox/Other Browsers war. We'd still have the woefully insecure ActiveX controls all over websites if Firefox hadn't came along and blocked them all, and we'd be without tabs for a while longer if NetCaptor hadn't championed them. I don't want to sound like an anti-Microsoftist, but if it wasn't for competition then it is likely that they would have held back on the features of their software so that they could release new versions (along with new pricetags) in order to maximise profit. In the case of open-source software, where there is no money involved, it is a case of making the program easier to use, more efficient and more available. I don't know of any initiatives to stop this happening, but I wouldn't support one if there was. As for the line-drawing procedure, the best way would be to use assembly language to tell the graphics card to draw a line directly to screen, but that would take a week to program. Most programs we know which draw lines use either DirectDraw or OpenGL, both of which are quite inefficient in relative terms. RevenDS 12:44, 12 November 2006 (UTC)[reply]
Well yes, I admit it doesn't make much sense to apply the same standards to Microsoft, they don't reveal their methods and many don't attempt to copy them. I don't think that it would necessarily smother competition, though. In an ideal situation, one function could be easily substituted for another (optimized by a different individual), better programmed one (once it had been proved to be higher-functioning), and since two separate programs with the same major function would be using the same base of operation (and both would performing basic functions at the same speed) the focus would be moved to which project was able to keep up with next-generation advanced functions, and apply them in an efficient way. Or maybe more important would be the easy of human interaction with the program interface, something that obviously can't be accurately benchmarked.
Then again, both implementation of next-gen functions and usability could simply be extensions of the basic framework, selectable in the same way that "themes" are in many programs nowadays. It obviously doesn't seem to work very well with the current economics of programming, but maybe that's because they need to be revised as well. I am (or am becoming) quite anti-Microsoftist, but more than that I'm pro-change. I think the way Microsoft and Macintosh function right now is very anti-competition, what with DOS being used as core for MS OSes all the way to WinME, and now with vista being released with a big price tag and mostly cosmetic modifications to WindowsXP.
I'm really surprised... discouraged that there isn't any efforts to benchmark mid- and high-level functions. Maybe that's something that should be worked on in the near future.  freshofftheufoΓΛĿЌ  13:21, 12 November 2006 (UTC)[reply]
I'm not aware of any standardized benchmark.. but we can analyze code based on how we know the compiler (or processor) handles it. For example if one solution compiles to a few lines of asm and another solution compiles to a thousand lines, you know which is faster. A more accurate way of gauging it would be to be familiar with the chip's architecture- even generalizations like Intel chips are better at processing a lot of light instructions very fast and AMD chips are better at chunking through intensive instructions can be very helpful. Also knowledge of how the compiler works can help: in many languages the statement
if( false AND someGiantFunction() )
will never evaluate someGiantFunction. So in AND tests, easier boolean expressions (and expressions more likely to be false, it's a balance) should come first for greatest efficiency. I can't imagine much of this being automated; writing fast code comes of knowing what you're doing- and knowing convention since convention usually knows best --frothT C 03:14, 13 November 2006 (UTC)[reply]
Could performance analysis be what you want? --Kjoonlee 04:23, 13 November 2006 (UTC)[reply]
Yes, actually that does link to a lot of what I was looking for, thanks.
To Froth, if the same program was twice, once with false before AND and once with it after, a "benchmarker" should determine that the before example is faster, whether compiled or just by looking at the code. If the compiler isn't smart enough to automatically evaluate that expression, then that is a weakness, or inefficiency in the compiler, right? Compilers could be put under the same amount of efficiency benchmarking as the programs that are being put through it.
Let me give an example of a problem like the one you describe, using drawLine() and drawOtherLine(). drawLine() is fast at drawing lines in general, but for some reason drawOtherLine() is faster at drawing lines in cases where 50% of them are off the screen (and thus there is some sort of unpredictable "if", making it difficult to benchmark). Assuming both are coded very efficiently in assembly (which I think all standard procedures at this level should be), is there any reason that the extra ability of drawOtherLine() to draw quickly (presumably by ignoring) lines that are off-screen couldn't be added to drawLine(), thus making it faster in both cases? Or maybe a better example, drawLine(x1,y1,x2,y2) vs. drawLine(x1,y2,width,height), where drawLine(xyxy) can draw long lines faster than drawLine(xywh): Is there any reason that one of these methods can't be made faster then the other in all normal circumstances? If this can be done, then I don't see why any program can't be systematically optimized up to its high-level procedures.  freshofftheufoΓΛĿЌ  05:02, 13 November 2006 (UTC)[reply]
Thanks for your answers, I tend to confuse myself by thinking too much sometimes and I am known to be a little naïve at times : X.  freshofftheufoΓΛĿЌ  05:02, 13 November 2006 (UTC)[reply]
Well first fresh when I said "false" I meant a boolean expression that returns false. So in ASMish code:
0 CMP A,B
1 JNE 3
2 JMP 7
3 CMP B,C
4 JNE 6
5 JMP 7
6 The instruction if they're both true
7 The rest of the program
I'm sure there are muc better ways to do it, but this is a very simple example. If A and B are equal then it goes on to compare B and C, however if A and B are not equal, it doesn't even bother to compare B and C; it just jumps down to "address" 7, and this can speed it up considerably, especially if there are several compares in sequence. A modern compiler would probably count:
if (false && anythingelse)
as a NOP (no-operation) and not even include it in the final code, however when both operands aren't necessarily false, some human optimization is possible by analyzing the code and trying to strike a balance between which is false more often and which takes longer to evaluate. This example might be way off in left field- I only know for sure a few interpreters (PHP comes to mind) that do this, but it's probably structured this way in most compiled languages too- and it works fine as a good example of static code analysis.
As for your example about drawLine, first let me say that if the ignore functionality of drawOtherLine was added to drawLine, combining the advantages, then that would be fine, that would be progress. I'm not sure exactly what you're asking. Note however that there might be some fundamental difference in how the arguments have to be handled (unlikely in this case but common when working with different types of data) that gives one function an inherent advantage in drawing long lines, or with which it's particularly easy to implement "ignore" functionality- in which case an overloaded or separate function is very advantegous --frothT C 21:52, 13 November 2006 (UTC)[reply]

One other comment on benchmarking: I suggest you put it in a loop, and draw maybe 1000 lines, and time how long that takes with each method. This will take care of natural variations in how long each operation takes (depending on what else the computer happens to be doing at the time). StuRat 05:39, 13 November 2006 (UTC)[reply]

Thanks for the explanation Froth. I'm not sure where talking about the same thing though D :. What I'm wondering is if it's possible to assume up to a certain level that procedureA is faster than procedureB in a reasonable range of likely cases, to such a degree that procedureB isn't needed at all. I can see that the ASM example you gave me can simplified with static code analysis when the input for "a" and "b" are known, or can be predicted, and I can't see why all compilers, ASM or otherwize, shouldn't be able determine that. Then it is even easier to judge the speed of the code by counting the number of operations it has to perform. For more complex operations it would make sense to repeat the procedure a number of times, as StuRat said, and find a natural average operating time. Regardless, I've strayed from my original question... which wasn't really a good question to begin with I guess. I think I'm just frustrated that all my free software operates so slowly on my borrowed POS laptop, and I wish that there was a more organized procedure for making software libraries that could insure supreme efficiency.  freshofftheufoΓΛĿЌ  01:48, 14 November 2006 (UTC)[reply]
To your first question, it's very possible, through static code analysis and actual timing or bechmarking to determine that one function is more efficient than another.. so just use the more efficient function for what you need it to solve. What's the problem? You can't eliminate all inefficient algorithms.. and sometimes algorithm B may be better than algorithm A. As for your next question, it's not at all simple for compilers to "tell" which operations it has to perform. What if I had something like this:
if( isFastIfInputEqualsTrue(false) && isFastIfInputEqualsTrue(true) )

or

if( isFastIfInputEqualsTrue(false) || isFastIfInputEqualsTrue(true) )
Common sense tells us that in both cases the rightmost condition should be evaluated first.. since it's very fast and presumably half the time the rightmost condition will determine the output of the entire boolean expression. However, the compiler isn't necessarily able to tell whether the function is actually faster if input equals true. And it's not necessarily true half the time; what if instead of just putting in true/false we put in some expression that must be evaluated at run time? The compiler would have no idea of knowing what balance to strike. Now given, if we had enough resources we could carry this out to infinite complexity and then it would be possible to dissect a piece of code and figure out the best way to optimize it.. and to some degree compilers do a very good job of it today. And what you're proposing is entirely feasible- for basic structures optimize as best as possible, for complex or unrecognized structures run some kind of timing analysis (which could get infinitely complex depending on the program, so that's not always possible). But that's already being done in everyday compilers. Granted, the big stuff like traces and benchmarks are only done for big projects and are organized largely by brainpower, but it is done. One thing you should be aware of, however, is the Halting problem. In this context it means that Turing proved that user input messes everything up, and that it's impossible to prove much about execution if a program takes input. It also is the famous proof that code analysis is never complete; you can write as complex an analyzer as you can and it will never be possible to predict completely the program flow - though of course with enough analysis it can get reasonably accurate and that's all that's really needed for benchmarking. Humans tend to be better at predicting problems arising from user input than machines- we can recognize patterns in common inputs and stuff of that nature. The halting problem presents a double blind for compilers and optimization because not only do you have the uncertainty of input, you have the uncertainty of run time. At any one point in the program it's impossible to know the value of any variable unless you execute it or simulate it somehow.. even something as simple as
short int number = 5;
(++number)%=4;
//what is number? uh I think it's 2 but I had to simulate execution in my head
requires that it actually be executed. Now this isn't a problem.. except that most compilers aren't going to make you wait for half an hour while it simulates execution 5000 times to tell which is more efficient. But of course your theoretical machine could- at great computational expense. Basically it's mostly not practical but sometimes not even possible to tell which is faster without timing it (or if it's relatively simple by doing static code analysis in your head). And even if you do time it you have to simulate realistic user input, which takes a creative mind or a brute forcer that runs through every possible input. So yes, it's possible -even feasible- to build such a system.. and many debuggers and compilers provide similar functionality today. But we're still at the point in computing when the mind can do it best, and programs aren't very good at analyzing code (for various reasons- the staggering complexity of the programming model for one). It's not too hard to simulate a processor, but analysis is entirely different.
To answer your question about your free software.. try compiling it from source for your system. Various scary things like pipeline architecture, and execution models force compatibility artifacts to appear in distribution binaries.. which would be tailored right for your system if you compiled it yourself.
OK now that I've exhaustively gone over something I'm pretty sure you never asked about, I can give you the links I'm pretty sure you'd like to have :)
The big fish: Computational complexity theory .. some others: Computability theory (computer science) Recursion theory Delta Debugging NP-complete Oracle machine Rice's theorem (it's impossible to look at any code without executing it and tell what it does, although the theorem is a more general case than that) Abstract machine Context-free grammar (an interesting problem in NP-completeness) Automata theory Abstraction (computer science) Post correspondence problem (a very simple similar problem to the halting problem but is easier to understand) Kolmogorov complexity (the blue whale of impossiblility problems, and surprisingly pertinent to code analysis - it's not necessarily analyzable beyond just stating the code itself) Annnd of course the obligatory Gödel's incompleteness theorems.
By the way, software libraries in general (especially things like the Standard Template Librarys) tend to be optimized quite well - even sloppy ones are cleaned up decently by good compilers.
So kind of "in summary" it's not too hard to just do static code analysis and come up with a reasonably optimal solution. If you try to automate it you run into a hundred brick walls in theory, but you could probably make it work reasonably well... for arguably trivial gain since present tools (plus a bit of intelligence) do a pretty good job of it already. An interesting experiment "in the future" would be to make some kind of machine that optimizes its own code (so it's optimizing an optimizer).. and see how various solutions end - probably with total erasure within a small number of loops. Debugging and optimizing is a sticky field, I hope I gave an answer that helps (I know I gave an answer that's long!) --frothT C 06:25, 14 November 2006 (UTC)[reply]

Can data deleted from a mobile phone be undeleted?[edit]

I know that when a file is deleted from a computer (even when deleted from the Recycle Bin), it remains on the hard disk, and can be retrieved by an undelete program, until it is overwritten.

Do mobile phones work the same way? If an SMS or recording is deleted, can it be retrieved before it is overwritten?

I think my mobile phone model is Nokia 7250 - I'm not exactly sure, though.

The mobile phone memory and the computer hard disk most probably work similarly in this matter, even though the mobile phones usually use flash memory. Using special equipment the non-overwritten data can be retrieved. –Mysid 12:33, 12 November 2006 (UTC)[reply]
If you are asking if it is theoretically possible, then the answer as above is yes. If you are asking if you are likely to be able to find someone who can do it to your nokia 7250? The answer is much more likely no. I've recovered data off a hard disk and even a digital camera flash card. The 1st thing here is you would need to know where the phone stores the SMS data and you would need some way for reading that area of memory directly. Not impossible, but unless you fork out a pile of cash for one of the so called "data recovery experts", I'd be looking at other options, like building a bridge and getting over it ;) . Vespine 22:22, 12 November 2006 (UTC)[reply]

Formula in Excel[edit]

I have been using some frequently used formulas which i have saved as addinns in excel.They work excellently when i use only one computer.But the problem is if i take a copy of the file and work in another computer the formula is changed i.e. it is still pointing on the same location where it was created.Is there anyway so that the formula refers to the same relative position in the new computer also? —The preceding unsigned comment was added by Amrahs (talkcontribs) .

Assuming that your using a recent edition of Excel, and Windows (I'm mostly familar with Office 2000 onwards, WinXP/NT and not sure of previous versions' differences) the following may help:
  • If you are talking about a link between workbooks a UNC path is better for portability between computers sharing network drives. Or if the links are saved with a formula that says something like 'C:\Documents and Settings\Username\Desktop\[Book1.xls]Sheet1'!A1 you can update all the links in a workbook that point to that workbook using Edit > Links...
  • If you mean the absolute address of a cell (e.g. it may say $A$1 and not A1) it will always refer to cell A1 wherever the formula is dragged or pasted. Remove the $ signs (select the formula and press F4 until the $ are gone) and the formula is more generic.
  • If you have created macros using the macro record function, Excel often saves exact cell references, you will need to edit the VBA for the function. This can be quite complicated if you have no experience in Visual Basic.
If this doesn't help, let me know the specifics and I will try to help further. --Phydaux 23:03, 12 November 2006 (UTC)[reply]

python bluetooth code not running in Fedora Core 5[edit]

Hi everybody I m doing a project "Bluetooth chatting software" on linux(FC5). i have installed pybluez library and try to run a simple "bluetooth device search program" in python but.........it gives an error ....."No bluetooth module found". i cant understand this problem ....so plz help.

I want know how can I solve this problem...... so that python bluetooth may work easily...

Home network / Internet security[edit]

Hi, I am running a home network with (up to) three computers. Until now, I have run firewall programs (eg Norman Personal Firewall) on the computers. However, my router (Asus WL500g, wireless network) also has a firewall implementation (NAT server, SPI firewall and other menus, I am not familiar with the specifications). It also has some functionality that allows some packages to get through automatically (can't remember the name of that... upnp?). When I have this (the firewall in the router) turned on, is there any point in running a local firewall in addition? It troubles up the communication between the computers at home, and occasionally blocks programs I try to use towards the Internet (such as OpenVPN). Can I rely on the tests on the net, such as the one on Symantec.com ("Symantec Security Check") [2], to tell me if my computers are safe enough? Thanks for any help! Jørgen 17:27, 12 November 2006 (UTC)[reply]

I would say no (to the is there any point in running a local firewall in addition? question), I have a similar set up and only run a firewall on the router. Your network, behind the router, is only local, this means that from the internet it "looks" like only one computer, because your ISP only gives an IP address to your router. It is your router then that splits up the network traffic to your PCs using local network addresses. It is not possible (generally) to connect to a local computer from the internet (through a router) because local addresses are not broadcast to the internet. Which is what port forwarding is for, it is done by the NAT or "virtual server" settings on your router. This allows programs to communicate "through" the router and firewall by "opening" the port that the program uses, allowing the internet to "see" that port on a local computer. In short, if you configure it correctly, a router firewall is very secure, it will not however protect you from viruses. Having said that, it may be a little trickier to initially configure everything, with programs that need an open port (like OpenVPN I imagine), local PC firewalls often automatically pick up the ports that are attempted and prompt you if you want to allow it, if you answer yes it sets it up by it self, but with a router, you have to learn how to do it manually. It is really not as daunting as it looks though. Vespine 21:59, 12 November 2006 (UTC)[reply]
Vespine's right- the router will provide superior security; just make sure you set it up properly. --frothT C 03:04, 13 November 2006 (UTC)[reply]
Thanks a lot! I believe there is some sort of automation in the NAT server that lets some programs communicate and allocates ports automatically, and this could possibly be compromised, but I think I'll be able to live with that. )If I open a port, say, 11394, and direct it to a specific computer, what are the odds that this one port can compromise security? On a vaguely related topic, as I have only one IP address to the Internet, will it be possible to run, say, VPN clients or Internet game instances on two computers simultaneously? Jørgen 14:19, 13 November 2006 (UTC)[reply]
So long as you can pick the ports you want to use (for those services that need externally visible, fixed ports), you can run quite a few things simultaneously; there are (nearly) 65536 ports on the outside of the router to divide among your machines. Unfortunately, though you can run twenty HTTP servers, only one of them can be on (the standard) port 80. (There are ways of splitting the traffic on a port among different computers, but this is usually used for load balancing rather than multiple distinct services; see, for instance, the Squid cache.) Similarly, some online gaming environments require a unique IP address for each of their users (commonly because they have a hardwired port number, which can only exist once per IP); for example, you cannot have two separate machines connect to Battle.net through the same NAT simultaneously. --Tardis 16:53, 13 November 2006 (UTC)[reply]
"nearly 65536" is an awfully strange way of saying "exactly 65535"! (although technically port 0 is reserved) Jorgen, you might want to read TCP and UDP port and Port forwarding --frothT C 22:48, 13 November 2006 (UTC)[reply]
With port 0 it would be 65536, not 65535; but others are reserved too, like 225-241, 249-255, 1011-1024, 1109, 3097, 3868 (but only for UDP), and 49151. See the official assignment list. Not to mention that you should probably not be using ports below 1024 for gaming anyway, unless you're running chess over SSH or so. So, "nearly 65536" it is; I didn't feel like calculating the precise number, especially given that it's not well-defined anyway. --Tardis 23:24, 14 November 2006 (UTC)[reply]
They may be "reserved" but you can still use them if you want to right? So exactly 65535. --frothT C 17:19, 15 November 2006 (UTC)[reply]
Hmm, don't know about battle.net but my housemate and I played a lot of counterstrike and world of warcraft at simultaneously through the same router (IP Address). Vespine 00:47, 14 November 2006 (UTC)[reply]
They use different ports. But forwarding from the router lets you play multiple copies of the same game on the same network --frothT C 06:31, 14 November 2006 (UTC)[reply]
I disagree with the advice you have been given. The firewall of the router expects to treat communication from the outside as suspect, and communication from the inside as safe. In the absence of spyware, trojan horses, and viruses that might be acceptable; but that is not the world we live in. A good software firewall can provide better protection with minimal intrusion. Security often costs convenience; but do you leave your home unlocked so you don't have to use a key? --KSmrqT 00:36, 15 November 2006 (UTC)[reply]
So run an antivirus. But not a software firewall --frothT C 02:25, 15 November 2006 (UTC)[reply]
Agree with Froth. Software firewalls are really only necessary when you don't have a hardware firewall already set down. Run a lot of antivirus programs, and if you're REALLY paranoid monitor your outbound connections for suspicious activity. Cephyr 03:38, 15 November 2006 (UTC)[reply]
Thanks for good advice. I don't lock my bedroom door if the front door is locked, but I still occasionally check if the stove is turned on when I leave, so I guess I'll follow the last two posters here, though part of what I liked with the on-computer firewall was full control of outgoing communication (though it was tiresome to configure and "teach"). AVG is the free antivirus software of choice today, right? Thanks again! Jørgen 19:07, 15 November 2006 (UTC)[reply]
Eh that seems to be the most popular, but it's also the most ugly. Truth is, if you know what you're doing an AV won't do anything for you except slow down file read/writes.. I and many others confidently go without antivirus. But if you have to have one, I recommend Avast because you can turn off "read" scanning, which is much better for big games (and working with big files) --frothT C 00:33, 17 November 2006 (UTC)[reply]