<!--
title: Platform-agnostic network APIs
domain: runtimes
topic: Networking
language: C++
source: dotnet/runtime
updated: 2025-06-24
url: https://awesomereviewers.com/reviewers/runtime-platform-agnostic-network-apis/
-->

When implementing networking functionality, ensure code uses platform-agnostic APIs and appropriate abstraction layers to handle differences between Windows, Unix, and macOS systems. Similar to how string operations require platform-specific handling (as seen in discussion 1 where `strchr` was replaced with `app_candidate.find(DIR_SEPARATOR)`), networking code should avoid direct OS-specific socket APIs in favor of cross-platform abstractions.

Example:
```cpp
// Avoid platform-specific code like this:
#ifdef _MSC_VER
    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
    // Windows-specific socket operations
#else
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    // Unix-specific socket operations
#endif

// Instead, use platform abstraction layers:
pal::socket_t sock = pal::create_socket(pal::AddressFamily::IPv4, pal::SocketType::Stream);
if (pal::connect_socket(sock, address, port))
{
    // Platform-agnostic socket operations
}
```

This approach ensures consistent behavior across all supported platforms and simplifies maintenance by centralizing platform-specific code in the abstraction layer.
