Free and easy-to-use client-side URL transfer library supporting almost every protocol.
Website: http://curl.haxx.se/libcurl/
Platforms supported: Win32, Linux, DOS
Headers to include: curl.bi
Header version: 7.39.0
Examples: in examples/network/curl/
Example
'' Curl HTTP Get example
#include once "curl.bi"
#include once "crt/string.bi"
'' this callback will be called when any data is received
Private Function write_callback cdecl _
    ( _
        ByVal buffer As Byte Ptr, _
        ByVal size As Integer, _
        ByVal nitems As Integer, _
        ByVal outstream As Any Ptr _
    ) As Integer
    Static As ZString Ptr zstr = 0
    Static As Integer maxbytes = 0
    Dim As Integer bytes = size * nitems
    '' current zstring buffer too small?
    If( maxbytes < bytes ) Then
        zstr = Reallocate( zstr, bytes + 1 )
        maxbytes = bytes
    End If
    '' "buffer" is not null-terminated, so we must dup it and add the null-term
    memcpy( zstr, buffer, bytes )
    zstr[bytes] = 0
    '' just print it..
    Print *zstr
    Return bytes
End Function
    '' init
    Dim As CURL Ptr curl = curl_easy_init( )
    If( curl = 0 ) Then
        End 1
    End If
    '' set url and callback
    curl_easy_setopt( curl, CURLOPT_URL, "freebasic.net" )
    curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, @write_callback )
    '' execute..
    curl_easy_perform( curl )
    '' shutdown
    curl_easy_cleanup( curl )