The increasing popularity of high-bandwidth Internet connections has enabled new applications like the online delivery of high-quality audio and video content. Conventional server-client approaches place the entire burden of delivery on the content provider's server, making these services expensive to provide. A peer-to-peer approach allows end users to reduce the burden on the service provider by contributing bandwidth by uploading data they have downloaded to other clients. However, the success of a peer-to-peer system hinges on resources contributed by participants. Unfortunately, studies have shown that end users are often reluctant to contribute resources to the system without a concrete incentive to do so. Our thesis is that a robust incentive mechanism is necessary to encourage nodes to contribute resources to the system, and a receiver-driven architecture with a pairwise incentive mechanism allows for great flexibility, simplicity, robustness, and performance. The popular file sharing software BitTorrent is widely used, and includes an incentive mechanism that aims to tie the quality of service a node receives to the amount of resources it contributes. Their incentive mechanism is pairwise, in that nodes only rely on direct first-hand observations eliminating the need for complex distributed algorithms. However, studies have shown that flaws in BitTorrent's incentive mechanism make it vulnerable to gaming. We present SWIFT, our alternative incentive mechanism for BitTorrent-like file sharing applications, and experimentally show that it is more resistant to gaming, while retaining the benefits of a pairwise mechanism. Having validated pairwise incentive mechanisms, we turn to our main goal of live streaming. Pairwise mechanisms rely on a bi-directional flow of data between nodes so that nodes may directly penalize neighbors that do not upload data to them. Therefore, traditional tree-based live streaming systems are not amenable to pairwise incentives. We address this with Chainsaw, our peer-to-peer live streaming system based on an unstructured mesh network. Through extensive experimental evaluation we demonstrate that Chainsaw is able to support high-bandwidth streams to a large number of simultaneous receivers with low packet-loss rates over a wide range of network sizes and other system parameters. We then build on Chainsaw and present Token Stealing, our pairwise incentive mechanism for peer-to-peer streaming. Through detailed experimental evaluation, we show that our algorithm offers good service to all participants in the network when the system is resource-rich. When the system is resource-constrained, however, nodes that contribute resources receive significantly better service than those that do not. Thus, we show that our system is versatile and scalable, offering excellent performance across a wide range of system parameters and network conditions, with a robust incentive mechanism that promotes resource-rich conditions by encouraging nodes to contribute as much bandwidth to the system as they are able.