Detecting button press over computer network
It's not clear to me what it's exactly what you want. I think it's like the following: you have a number of lines which will have to be interfaced by a microcontroller, and this microcontroller sends a signal to a computer. The computer processes this signal. 

For the microcontroller part, you can use a chip with integrated ethernet like the PIC18F67J60 Olin mentioned. You can also use a smaller (easier to program) chip with an external ethernet chip like the ENC28J60. You can write software for the microcontroller using Microchip's TCP/IP stack, Olin Lathrop's TCP/IP stack (see under "Networking Example Firmware") or the implementation by Matthew Schinkel in Jalv2. 

Since the microcontroller sends a signal to the computer, it's the easiest to make the computer the server and the microcontroller the client. That would mean you need some sort of server on the computer. I'd recommend you to go for an HTTP server, because there's the most information available for it. For linux, you can use a LAMP server - for Windows, use WAMP or XAMPP. 

You'll have to make some server-side script that processes the request from the client. The client has to call that script. You could, for example, make the client request /button.php?button=17 when button number 17 has been pressed. Then, the server-side script could be like this:

&lt;?php
if (!isset($_GET['button'])) {                    // Check if ?button exists
    die('The button variable is mandatory.');     // If not, quit
}

$button = (int) $_GET['button'];                  // Cast ?button to an integer
if ($button == 0) {                               // Check if it was an integer
    die('Invalid button number.');                // If not, quit
}

// Do stuff with $button


Here's a block scheme:



Let me explain this.


The Buttons &amp; other IO form the input for the microcontroller you're going to use. This would be the buttons you're going to interface, but could also be other things, like I2C / SPI devices, or whatever. 
You can get information from this IO with basic chip programming. The chip has to read values from the inputs.
The chip (could be a PIC) with ethernet (could be built-in) processes the input information, and transmits it to the IP of the server, say, 192.168.0.10. 
For this, it has to be sent to the router on IP 192.168.0.1 first using the TCP/IP stack. You won't notice this on the chip. It's just like you contact the server directly.
The router processes the packet and sends it to the server on 192.168.0.10. You don't have to make this, the router does it by itself. 
The server gets an HTTP request and needs to process it. It sends a response back to the router on 192.168.0.10, which forwards it to the chip. This isn't shown in the block scheme because it isn't needed in this application: data has to be sent from the chip to the server, but not back.
The data from the chip can be used by the server to show it on a screen, store it in a file, or do something else with it. That's entirely up to you.


You can also, as Olin suggests in the comments, use a TCP server instead of an HTTP server. This is possible and more efficient (which is a theoretical pro, you won't notice it). I'd recommend a starter in networking to go with an HTTP server. There are loads of information on the topic and it's very easy to get started with. If you know stuff about networking already, you can build a TCP server as well. Neither of the two servers would be more complex to implement on the client-side.