SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Internet all the things!
curl everywhere
Daniel Stenberg, February 1st
2015
Agenda
How we got here
Using libcurl
Future
Daniel Stenberg
Email: daniel@haxx.se
Twitter: @bagder
Web: daniel.haxx.se
Blog: daniel.haxx.se/blog
network hacker at
Please ask!
Feel free to interrupt and ask at any time!
First there was nothing
One day in 1996
… became curl 1998
HTTP, Gopher, FTP
… fast-forward to 2015
curl is a command line tool for transferring data with
URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher,
HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3,
POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
Telnet and TFTP. curl supports SSL certificates, HTTP
POST, HTTP PUT, FTP uploading, HTTP form based
upload, proxies, cookies, user+password authentication
(Basic, Digest, NTLM, Negotiate, Kerberos..), HTTP/2,
happy eyeballs, file transfer resume, proxy tunneling
and a busload of other useful tricks.
1000 million users
16 Software, Access, Actuate, Adara Networks, Adobe, Aditiva, Adknowledge, alaTEST, Altera,
AOL, Apple, Archivas, ATX, Autodesk, BBC, Bietfuchs, Bitcartel, Blackberry, Blizzard,
Bloglines.com, Blue Digits, Blue Security, BMW, Bosch, Bwin, Candela Technologies, Canonical,
Carestream Health, Cascade Data Systems, CatchFIRE Systems, CERN, CheckPoint, Chevrolet,
Chronos, Cisco, CLAAS Tractor SAS, Comcast, Contactor Data, Cybernetica AS, Datasphere S.A.,
Datordax, Denon, DesignQuotes, Digium, EdelWeb, EFS Technology, Eiffel Software, Electronic
Arts, Emsoft, Euroling, Ergon Informatik AG, ESRI, expandtalk.se, Eye-Fi, E2E Technologies Ltd, F-
Secure, Facebook, FalconView, Feitian Technologies, FriendFeed, FMWebschool, GRIN, Groopex,
Grooveshark, Focuseek, Games Workshop, Garmin, GipsyMedia Ltd, Google, Haxx, HPC, Heynow
Software, Hitachi, HP, Huawei, HTC, inSORS, IBM, ideelabor.ee, Idruna Software Inc, Id Software,
Infomedia Business Systems Division, Informatica PowerCenter, Information Handling Services,
Insignia, Intel, Internet Security Systems, Intra2net AG, Jajja Communications, JET, JLynx Software,
Kajala Group Ltd., Kaleidescape, Karelia, Kaseya, Kencast inc., Kerio Technologies, Kongsberg
Spacetec, LassoSoft, Lastpass, LG, Linden Lab, Machina Networks, Macromates, Macromedia,
Magic TV, Mandiant Memoryze, MandrakeSoft, Marantz, Mazda, McAfee/Network Associates Inc,
MediaAnalys, Mellanox Switch Management System, Mercedes-Benz, Metaio, Micromuse Inc.,
MokaFive, Inc, Momento, Moodstocks, Motorola, Nagarsoft, Neptune Labs, Nest, Netflix, Netiq,
Network Mail, Neuros Technology, Nintendo, NoDesign's DIA Parrot, Nortel, Office2office Plc,
OKTET Labs Ltd, One Laptop Per Child, Onkyo, On Technology, OpenLogic, Optimsys, Oracle,
Outrider, Palm, Panasonic, Pandigital, Passiv Systems, Pelco, Philips, Pioneer, Polaroid
Corporation, Polycom, Pure Storage, Quest, QNX, RBS, Research in Motion, Retarus Network
Services GmbH, Riverbed, Rolltech, Inc, RSA Security Inc, RSSS, Samsung, SanDisk, SAS Institute,
SEB, Sharp, Siemens, Silicon Landmark, Slingbox, SmithMicro, Sony, Source Remoting, Spotify,
Steambird, Sun, Swisscom, Symantec, System Garden, Tasvideos, Tellabs, Telstra, Telvue,
Thumbtack, Tilgin, Tomtom, ToolAware, Toshiba Corporation, Trend Micro, Tribalmedia, Tiempo
de Espera, Unity3d, Vivisimo, Vmware, Voddler, Volition Inc, Vuo, Wump Research & Company,
Xilinx, XonaSoftware, Yahoo, Yamaha, Zimbra, Zixcorp, Zonar Systems LLC, Zyxel … and more
All the things!
Mac OS X
TVs
Iphones and Ipads
Other phones
Linux
Games
Version control systems
Cars
PHP sites
Set-top boxes
Audio equipment
Bluray players
Printers
Firefox crash reporter
Sites: Facebook, Yahoo, …
Your next device
Everyone in this room most
likely has a device using libcurl.
Probably even more than one!
why they use curl?
Because Internet doesn't
follow specs
Open source
MIT licensed
Simple and stable API
Yet powerful API
HTTP library when libwww was
the only choice
C library is still most portable
Bindings for every language
Decent documentation
Decent stability
Supports all the protocols
Fast
Allows disabling parts for
footprint shaving
Many TLS backends
Small devices still like C
http://curl.haxx.se/libcurl/theysay.html
the project
curl and libcurl
Transfer data using internet application protocols
Stable products
Stable API
Maximum portability
MIT
Contributors over time
1200+ in total
30-40 contributors per release
Increasing linearly
Core team < 10 people
Volunteers!
bindings
Ada95, Basic, C++, Ch, Cocoa, D, Dylan,
Eiffel, Euphoria, Falcon, Ferite, Gambas,
glib/GTK+, Guile, Haskell, ILE/RPG, Java,
Lisp, Lua, Mono, .NET, Object-Pascal,
Ocaml, Pascal, Perl, PHP, Postgres,
Python, R, Rexx, Ruby, Scheme, S-Lang,
Smalltalk, SP-Forth, SPL, Tcl, Visual Basic,
Visual FoxPro, Q, wxWidgets, XBLite
So what do I do?
When I want to use it.
Build it
Because on most embedded devices you will
Tailor your own build
Yocto / OpenEmbedded, BuildRoot etc provide recipes
All Linux distros have binary packages
Transfer oriented
A transfer: data going in either or both directions to or from a
given URL
Create an “easy handle” with curl_easy_setopt()
Create one handle for each transfer or re-use it serially
Set your transfer options and preferences
Like URL
Write callback
Authentication
Or another one of the 200+ options
Synch or asynch
The easy interface is single-transfer and blocking
The multi interface is many-transfers and non-blocking
hello world - blocking
CURL *h = curl_easy_init();
curl_easy_setopt(h, CURLOPT_URL, "http://example.com");
curl_easy_setopt(h, CURLOPT_FOLLOWLOCATION, 1L);
CURLcode res = curl_easy_perform(h);
if (res)
fprintf(stderr, "curl_easy_perform() failed: %sn",
curl_easy_strerror(res));
curl_easy_cleanup(h);
hello world – non-blocking
CURL *h = curl_easy_init();
curl_easy_setopt(h, CURLOPT_URL, "http://example.com");
CURLM *m = curl_multi_init();
curl_multi_add_handle(m, h);
int running;
do {
res = curl_multi_fdset(h, ...);
select();
curl_multi_perform(m, &running);
} while(running);
curl_multi_remove_handle(m, h);
curl_easy_cleanup(h);
curl_multi_cleanup(m);
event-based
avoids select() and poll()
event-library agnostic
scales better when beyond hundreds of parallel transfers
curl_multi_socket_action()
Event-based logic is usually trickier to write, read and debug
Documented
As man pages, as web pages on the site and even PDF
documents in the release archives.
http://curl.haxx.se/libcurl/
--libcurl
$ curl http://example.com/ -d “moo” -k -u my:secret
$ curl http://example.com/ -d “moo” -k -u my:secret --libcurl code.c
$ cat code.c
Future?
HTTP/2 multiplexing
Better parallel DNS lookups
SRV records
HTTPS to proxy
There's no slow-down in sight
Thank you!
Learn more!
•curl and libcurl: http://curl.haxx.se/
•curl vs wget:
http://daniel.haxx.se/docs/curl-vs-wget.html
•curl vs other tools:
http://curl.haxx.se/docs/comparison-table.html
•curl's TLS backends compared:
http://curl.haxx.se/docs/ssl-compared.html
Doing good is part of our code
License
This presentation and its contents are licensed under
the Creative Commons Attribution 4.0 license:
http://creativecommons.org/licenses/by/4.0/

Weitere ähnliche Inhalte

Was ist angesagt?

Gabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHYGabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHYIKT-Norge
 
Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool Pavel Odintsov
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみたYutaka Ishizaki
 
Henrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspectiveHenrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspectiveIKT-Norge
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Cumulus Networks
 
Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Anatoliy Okhotnikov
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICSource Conference
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFSC4Media
 
SDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + QuantumSDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + QuantumThe Linux Foundation
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStackSean Chang
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsJean-Frederic Clere
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2Hell19
 
Implementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit networkImplementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit networkPavel Odintsov
 
redGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solutionredGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solutionRedge Technologies
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Kazuho Oku
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?Ronny
 
Operationalizing BGP in the SDDC
Operationalizing BGP in the SDDCOperationalizing BGP in the SDDC
Operationalizing BGP in the SDDCCumulus Networks
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for ContainersCumulus Networks
 

Was ist angesagt? (20)

Gabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHYGabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHY
 
Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみた
 
Henrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspectiveHenrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspective
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]
 
Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUIC
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFS
 
OpenVPN
OpenVPNOpenVPN
OpenVPN
 
SDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + QuantumSDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + Quantum
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStack
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validations
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2
 
Implementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit networkImplementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit network
 
redGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solutionredGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solution
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
 
Operationalizing BGP in the SDDC
Operationalizing BGP in the SDDCOperationalizing BGP in the SDDC
Operationalizing BGP in the SDDC
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for Containers
 
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
 

Andere mochten auch

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmDaniel Stenberg
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open SourceDaniel Stenberg
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016Daniel Stenberg
 
La etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legalLa etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legalISABEL LARA RODRIGUEZ
 
Antenas sistemas i
Antenas sistemas iAntenas sistemas i
Antenas sistemas iAlexrod45
 
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION
 
Analgesia multimodal para plastia
Analgesia multimodal para plastiaAnalgesia multimodal para plastia
Analgesia multimodal para plastiaLily Lopez
 
Live ensure overview 1.4
Live ensure overview 1.4Live ensure overview 1.4
Live ensure overview 1.4Ross Macdonald
 
Como encontrar tu felicidad interior
Como encontrar tu felicidad interiorComo encontrar tu felicidad interior
Como encontrar tu felicidad interiorSophie Da Costa
 
camara de frio para camaron
camara de frio para camaroncamara de frio para camaron
camara de frio para camaronjose934
 
Unidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológicaUnidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológicaElisa Arias
 
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...ANTONIO INACIO FERRAZ
 
A lifetime group presentation 2011
A lifetime group presentation 2011A lifetime group presentation 2011
A lifetime group presentation 2011Akhil Joshi
 
Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Mario Laura
 

Andere mochten auch (20)

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Introduction HTTP via cURL
Introduction HTTP via cURLIntroduction HTTP via cURL
Introduction HTTP via cURL
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
 
La etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legalLa etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legal
 
Antenas sistemas i
Antenas sistemas iAntenas sistemas i
Antenas sistemas i
 
Kelox
KeloxKelox
Kelox
 
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
 
Analgesia multimodal para plastia
Analgesia multimodal para plastiaAnalgesia multimodal para plastia
Analgesia multimodal para plastia
 
Live ensure overview 1.4
Live ensure overview 1.4Live ensure overview 1.4
Live ensure overview 1.4
 
Como encontrar tu felicidad interior
Como encontrar tu felicidad interiorComo encontrar tu felicidad interior
Como encontrar tu felicidad interior
 
camara de frio para camaron
camara de frio para camaroncamara de frio para camaron
camara de frio para camaron
 
Unidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológicaUnidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológica
 
Cine actual
Cine actualCine actual
Cine actual
 
Rotusa (1)
Rotusa (1)Rotusa (1)
Rotusa (1)
 
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
 
Planeta
PlanetaPlaneta
Planeta
 
A lifetime group presentation 2011
A lifetime group presentation 2011A lifetime group presentation 2011
A lifetime group presentation 2011
 
Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Plan de empresa [siscov sac]
Plan de empresa [siscov sac]
 

Ähnlich wie Internet all things curl everywhere

XMPP, HTTP and UPnP
XMPP, HTTP and UPnPXMPP, HTTP and UPnP
XMPP, HTTP and UPnPITVoyagers
 
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Julien Vermillard
 
Skydive, real-time network analyzer
Skydive, real-time network analyzer Skydive, real-time network analyzer
Skydive, real-time network analyzer Sylvain Afchain
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSimen Sommerfeldt
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...Mullaiselvan Mohan
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application serverVOIP2DAY
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNGerardo Pardo-Castellote
 
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018Timothy Spann
 
Computer communication module1-intro
Computer communication module1-introComputer communication module1-intro
Computer communication module1-introRanjan Ghosh
 
Apache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFiApache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFiTimothy Spann
 
IoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFiIoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFiDataWorks Summit
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceTimothy Spann
 
mehmet_ekici
mehmet_ekicimehmet_ekici
mehmet_ekicixpath7
 
You know what's cool? Running on a billion devices
You know what's cool? Running on a billion devicesYou know what's cool? Running on a billion devices
You know what's cool? Running on a billion devicesDaniel Stenberg
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTBenjamin Cabé
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 

Ähnlich wie Internet all things curl everywhere (20)

XMPP, HTTP and UPnP
XMPP, HTTP and UPnPXMPP, HTTP and UPnP
XMPP, HTTP and UPnP
 
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
 
Skydive, real-time network analyzer
Skydive, real-time network analyzer Skydive, real-time network analyzer
Skydive, real-time network analyzer
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-RED
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDN
 
0bnosis 2016
0bnosis 20160bnosis 2016
0bnosis 2016
 
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
 
Computer communication module1-intro
Computer communication module1-introComputer communication module1-intro
Computer communication module1-intro
 
Apache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFiApache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFi
 
Sectools
SectoolsSectools
Sectools
 
aaa
aaaaaa
aaa
 
IoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFiIoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFi
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open source
 
mehmet_ekici
mehmet_ekicimehmet_ekici
mehmet_ekici
 
You know what's cool? Running on a billion devices
You know what's cool? Running on a billion devicesYou know what's cool? Running on a billion devices
You know what's cool? Running on a billion devices
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 

Mehr von Daniel Stenberg

Mehr von Daniel Stenberg (20)

mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
 
The state of curl 2020
The state of curl 2020The state of curl 2020
The state of curl 2020
 
curl better
curl bettercurl better
curl better
 
HTTP/3 for everyone
HTTP/3 for everyoneHTTP/3 for everyone
HTTP/3 for everyone
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
 
HTTP/3 in curl
HTTP/3 in curlHTTP/3 in curl
HTTP/3 in curl
 

Kürzlich hochgeladen

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Kürzlich hochgeladen (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

Internet all things curl everywhere

  • 1. Internet all the things! curl everywhere Daniel Stenberg, February 1st 2015
  • 2. Agenda How we got here Using libcurl Future
  • 3. Daniel Stenberg Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog network hacker at
  • 4. Please ask! Feel free to interrupt and ask at any time!
  • 5. First there was nothing
  • 6. One day in 1996
  • 7. … became curl 1998 HTTP, Gopher, FTP
  • 8. … fast-forward to 2015 curl is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos..), HTTP/2, happy eyeballs, file transfer resume, proxy tunneling and a busload of other useful tricks.
  • 10. 16 Software, Access, Actuate, Adara Networks, Adobe, Aditiva, Adknowledge, alaTEST, Altera, AOL, Apple, Archivas, ATX, Autodesk, BBC, Bietfuchs, Bitcartel, Blackberry, Blizzard, Bloglines.com, Blue Digits, Blue Security, BMW, Bosch, Bwin, Candela Technologies, Canonical, Carestream Health, Cascade Data Systems, CatchFIRE Systems, CERN, CheckPoint, Chevrolet, Chronos, Cisco, CLAAS Tractor SAS, Comcast, Contactor Data, Cybernetica AS, Datasphere S.A., Datordax, Denon, DesignQuotes, Digium, EdelWeb, EFS Technology, Eiffel Software, Electronic Arts, Emsoft, Euroling, Ergon Informatik AG, ESRI, expandtalk.se, Eye-Fi, E2E Technologies Ltd, F- Secure, Facebook, FalconView, Feitian Technologies, FriendFeed, FMWebschool, GRIN, Groopex, Grooveshark, Focuseek, Games Workshop, Garmin, GipsyMedia Ltd, Google, Haxx, HPC, Heynow Software, Hitachi, HP, Huawei, HTC, inSORS, IBM, ideelabor.ee, Idruna Software Inc, Id Software, Infomedia Business Systems Division, Informatica PowerCenter, Information Handling Services, Insignia, Intel, Internet Security Systems, Intra2net AG, Jajja Communications, JET, JLynx Software, Kajala Group Ltd., Kaleidescape, Karelia, Kaseya, Kencast inc., Kerio Technologies, Kongsberg Spacetec, LassoSoft, Lastpass, LG, Linden Lab, Machina Networks, Macromates, Macromedia, Magic TV, Mandiant Memoryze, MandrakeSoft, Marantz, Mazda, McAfee/Network Associates Inc, MediaAnalys, Mellanox Switch Management System, Mercedes-Benz, Metaio, Micromuse Inc., MokaFive, Inc, Momento, Moodstocks, Motorola, Nagarsoft, Neptune Labs, Nest, Netflix, Netiq, Network Mail, Neuros Technology, Nintendo, NoDesign's DIA Parrot, Nortel, Office2office Plc, OKTET Labs Ltd, One Laptop Per Child, Onkyo, On Technology, OpenLogic, Optimsys, Oracle, Outrider, Palm, Panasonic, Pandigital, Passiv Systems, Pelco, Philips, Pioneer, Polaroid Corporation, Polycom, Pure Storage, Quest, QNX, RBS, Research in Motion, Retarus Network Services GmbH, Riverbed, Rolltech, Inc, RSA Security Inc, RSSS, Samsung, SanDisk, SAS Institute, SEB, Sharp, Siemens, Silicon Landmark, Slingbox, SmithMicro, Sony, Source Remoting, Spotify, Steambird, Sun, Swisscom, Symantec, System Garden, Tasvideos, Tellabs, Telstra, Telvue, Thumbtack, Tilgin, Tomtom, ToolAware, Toshiba Corporation, Trend Micro, Tribalmedia, Tiempo de Espera, Unity3d, Vivisimo, Vmware, Voddler, Volition Inc, Vuo, Wump Research & Company, Xilinx, XonaSoftware, Yahoo, Yamaha, Zimbra, Zixcorp, Zonar Systems LLC, Zyxel … and more
  • 11. All the things! Mac OS X TVs Iphones and Ipads Other phones Linux Games Version control systems Cars PHP sites Set-top boxes Audio equipment Bluray players Printers Firefox crash reporter Sites: Facebook, Yahoo, … Your next device
  • 12. Everyone in this room most likely has a device using libcurl. Probably even more than one!
  • 13. why they use curl? Because Internet doesn't follow specs Open source MIT licensed Simple and stable API Yet powerful API HTTP library when libwww was the only choice C library is still most portable Bindings for every language Decent documentation Decent stability Supports all the protocols Fast Allows disabling parts for footprint shaving Many TLS backends Small devices still like C http://curl.haxx.se/libcurl/theysay.html
  • 14. the project curl and libcurl Transfer data using internet application protocols Stable products Stable API Maximum portability MIT
  • 15. Contributors over time 1200+ in total 30-40 contributors per release Increasing linearly Core team < 10 people Volunteers!
  • 16. bindings Ada95, Basic, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Guile, Haskell, ILE/RPG, Java, Lisp, Lua, Mono, .NET, Object-Pascal, Ocaml, Pascal, Perl, PHP, Postgres, Python, R, Rexx, Ruby, Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro, Q, wxWidgets, XBLite
  • 17. So what do I do? When I want to use it.
  • 18. Build it Because on most embedded devices you will Tailor your own build Yocto / OpenEmbedded, BuildRoot etc provide recipes All Linux distros have binary packages
  • 19. Transfer oriented A transfer: data going in either or both directions to or from a given URL Create an “easy handle” with curl_easy_setopt() Create one handle for each transfer or re-use it serially Set your transfer options and preferences Like URL Write callback Authentication Or another one of the 200+ options
  • 20. Synch or asynch The easy interface is single-transfer and blocking The multi interface is many-transfers and non-blocking
  • 21. hello world - blocking CURL *h = curl_easy_init(); curl_easy_setopt(h, CURLOPT_URL, "http://example.com"); curl_easy_setopt(h, CURLOPT_FOLLOWLOCATION, 1L); CURLcode res = curl_easy_perform(h); if (res) fprintf(stderr, "curl_easy_perform() failed: %sn", curl_easy_strerror(res)); curl_easy_cleanup(h);
  • 22. hello world – non-blocking CURL *h = curl_easy_init(); curl_easy_setopt(h, CURLOPT_URL, "http://example.com"); CURLM *m = curl_multi_init(); curl_multi_add_handle(m, h); int running; do { res = curl_multi_fdset(h, ...); select(); curl_multi_perform(m, &running); } while(running); curl_multi_remove_handle(m, h); curl_easy_cleanup(h); curl_multi_cleanup(m);
  • 23. event-based avoids select() and poll() event-library agnostic scales better when beyond hundreds of parallel transfers curl_multi_socket_action() Event-based logic is usually trickier to write, read and debug
  • 24. Documented As man pages, as web pages on the site and even PDF documents in the release archives. http://curl.haxx.se/libcurl/
  • 25. --libcurl $ curl http://example.com/ -d “moo” -k -u my:secret $ curl http://example.com/ -d “moo” -k -u my:secret --libcurl code.c $ cat code.c
  • 26. Future? HTTP/2 multiplexing Better parallel DNS lookups SRV records HTTPS to proxy There's no slow-down in sight
  • 28. Learn more! •curl and libcurl: http://curl.haxx.se/ •curl vs wget: http://daniel.haxx.se/docs/curl-vs-wget.html •curl vs other tools: http://curl.haxx.se/docs/comparison-table.html •curl's TLS backends compared: http://curl.haxx.se/docs/ssl-compared.html
  • 29. Doing good is part of our code
  • 30. License This presentation and its contents are licensed under the Creative Commons Attribution 4.0 license: http://creativecommons.org/licenses/by/4.0/