Skip to main content
IronRDP provides flexible APIs for building RDP clients, supporting both blocking and asynchronous I/O patterns. This guide walks through creating a basic client that connects to an RDP server and processes graphics updates.

Client Architecture

An IronRDP client consists of three main phases:
  1. Connection - Establish TCP connection and negotiate RDP protocol parameters
  2. Authentication - Perform TLS upgrade and CredSSP authentication
  3. Active Session - Process incoming PDUs and handle graphics/input

Blocking Client Example

Here’s how to build a basic blocking client that captures a screenshot (based on examples/screenshot.rs):

Async Client with Tokio

For asynchronous clients, use ironrdp-async and ironrdp-tokio:
For a production-ready client with:
  • Window management (using winit)
  • Software rendering (using softbuffer)
  • Input handling
  • Clipboard support
See the ironrdp-client crate source code.

Key Configuration Options

Performance Flags

Optimize for different scenarios:

Compression

Enable graphics compression:

Desktop Size

Specify custom resolution:

Error Handling

IronRDP uses ironrdp::connector::ConnectorError for connection errors and session-specific errors during the active stage:

Next Steps