186
Nicholas Valbusa - @squallstar Intesys Web Agency APPLE BONJOUR, LET’S TALK! Thursday, May 24, 12

Apple Bonjour: Let's Talk!

Embed Size (px)

DESCRIPTION

"Bonjour" è ben più di un formale saluto in francese. :) Molti programmatori lo usano durante il proprio lavoro ma pochissimi lo conoscono veramente. Non stiamo ovviamente parlando della lingua francese, ma di "Bonjour", il protocollo di comunicazione che da anni viene utilizzato sui sistemi operativi iOS, OSX assieme ad altre piattaforme, tra cui Android. Durante questo talk esploreremo i suoi vantaggi principali, per poi imparare a utilizzarlo attraverso un caso reale: verrà illustrato lo sviluppo di un'applicazione nativa per iPad che metta in comunicazione diversi device all'interno della medesima rete, creando una chat ed un servizio di ScreenCast.

Citation preview

Page 1: Apple Bonjour: Let's Talk!

Nicholas Valbusa - @squallstarIntesys Web Agency

APPLE BONJOUR,LET’S TALK!

Thursday, May 24, 12

Page 2: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 3: Apple Bonjour: Let's Talk!

Few words about me

Thursday, May 24, 12

Page 4: Apple Bonjour: Let's Talk!

Nicholas Valbusa@squallstar

Few words about me

Thursday, May 24, 12

Page 5: Apple Bonjour: Let's Talk!

Nicholas Valbusa@squallstar

Few words about me

Web Developer since 2004

Thursday, May 24, 12

Page 6: Apple Bonjour: Let's Talk!

Nicholas Valbusa@squallstar

Few words about me

Mobile Developer since 2010

Web Developer since 2004

Thursday, May 24, 12

Page 7: Apple Bonjour: Let's Talk!

Nicholas Valbusa@squallstar

Few words about me

Mobile Developer since 2010WHYMCA 2011: Webkit meets Native development

Web Developer since 2004

Thursday, May 24, 12

Page 8: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 9: Apple Bonjour: Let's Talk!

Intesys è una Web Agency Innovativa nata nel 1995 a Verona

Thursday, May 24, 12

Page 10: Apple Bonjour: Let's Talk!

Intesys è una Web Agency Innovativa nata nel 1995 a Verona

Un team di 90 specialisti divisi in 4 aree

Thursday, May 24, 12

Page 11: Apple Bonjour: Let's Talk!

Intesys è una Web Agency Innovativa nata nel 1995 a Verona

Un team di 90 specialisti divisi in 4 aree

Thursday, May 24, 12

Page 12: Apple Bonjour: Let's Talk!

We’ll talk about

Thursday, May 24, 12

Page 13: Apple Bonjour: Let's Talk!

We’ll talk about

Thursday, May 24, 12

Page 14: Apple Bonjour: Let's Talk!

We’ll talk about

Thursday, May 24, 12

Page 15: Apple Bonjour: Let's Talk!

• TCP/IP

We’ll talk about

Thursday, May 24, 12

Page 16: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP

We’ll talk about

Thursday, May 24, 12

Page 17: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP• Socket, Stream, Buffers

We’ll talk about

Thursday, May 24, 12

Page 18: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP• Socket, Stream, Buffers• Create and publish a server

We’ll talk about

Thursday, May 24, 12

Page 19: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP• Socket, Stream, Buffers• Create and publish a server• Join a server

We’ll talk about

Thursday, May 24, 12

Page 20: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP• Socket, Stream, Buffers• Create and publish a server• Join a server• Network messages

We’ll talk about

Thursday, May 24, 12

Page 21: Apple Bonjour: Let's Talk!

• TCP/IP• Apple Bonjour, uPNP• Socket, Stream, Buffers• Create and publish a server• Join a server• Network messages• Other...

We’ll talk about

Thursday, May 24, 12

Page 22: Apple Bonjour: Let's Talk!

We’ll see

Thursday, May 24, 12

Page 23: Apple Bonjour: Let's Talk!

We’ll see

• A screencast native application

Thursday, May 24, 12

Page 24: Apple Bonjour: Let's Talk!

We’ll see

• A screencast native application• Something like chats

Thursday, May 24, 12

Page 25: Apple Bonjour: Let's Talk!

We’ll see

• A screencast native application• Something like chats• Where server can send images and other things

Thursday, May 24, 12

Page 26: Apple Bonjour: Let's Talk!

We’ll see

• A screencast native application• Something like chats• Where server can send images and other things

Follow the talk from your iPad using the same app that we’re going to make

iCast

Thursday, May 24, 12

Page 27: Apple Bonjour: Let's Talk!

iCast

Thursday, May 24, 12

Page 28: Apple Bonjour: Let's Talk!

iCast

Thursday, May 24, 12

Page 29: Apple Bonjour: Let's Talk!

iCast

Thursday, May 24, 12

Page 30: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 31: Apple Bonjour: Let's Talk!

“Once upon a time”

Thursday, May 24, 12

Page 32: Apple Bonjour: Let's Talk!

“Once upon a time”

Apple Talk

Thursday, May 24, 12

Page 33: Apple Bonjour: Let's Talk!

“Once upon a time”

• Protocollo usato nelle reti Macintosh

Apple Talk

Thursday, May 24, 12

Page 34: Apple Bonjour: Let's Talk!

“Once upon a time”

• Protocollo usato nelle reti Macintosh• Condivisione di file e stampanti

Apple Talk

Thursday, May 24, 12

Page 35: Apple Bonjour: Let's Talk!

“Once upon a time”

• Protocollo usato nelle reti Macintosh• Condivisione di file e stampanti• Uno dei primi sistemi plug-n-play

Apple Talk

Thursday, May 24, 12

Page 36: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 37: Apple Bonjour: Let's Talk!

“things changes”

Thursday, May 24, 12

Page 38: Apple Bonjour: Let's Talk!

TCP/IP

“things changes”

Thursday, May 24, 12

Page 39: Apple Bonjour: Let's Talk!

TCP/IP

• Negli anni novanta, con la diffusione del TCP/IP Apple dismesse AppleTalk

“things changes”

Thursday, May 24, 12

Page 40: Apple Bonjour: Let's Talk!

TCP/IP

• Negli anni novanta, con la diffusione del TCP/IP Apple dismesse AppleTalk• Finalmente i Mac potevano connettersi con

altri sistemi operativi

“things changes”

Thursday, May 24, 12

Page 41: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 42: Apple Bonjour: Let's Talk!

ZeroconfDHCP DNS

Thursday, May 24, 12

Page 43: Apple Bonjour: Let's Talk!

ZeroconfDHCP DNS

“A set of techniques that automatically creates a usable IP network without manual operator intervention”

Thursday, May 24, 12

Page 44: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 45: Apple Bonjour: Let's Talk!

Bonjour

Thursday, May 24, 12

Page 46: Apple Bonjour: Let's Talk!

Bonjour

L’implementazione Appledi “Zero configuration network”

Thursday, May 24, 12

Page 47: Apple Bonjour: Let's Talk!

Bonjour

L’implementazione Appledi “Zero configuration network”

“It just works”

Thursday, May 24, 12

Page 48: Apple Bonjour: Let's Talk!

Bonjour

• mDNS + DNS Service discovery

L’implementazione Appledi “Zero configuration network”

“It just works”

Thursday, May 24, 12

Page 49: Apple Bonjour: Let's Talk!

Bonjour

• mDNS + DNS Service discovery• Address assignment

L’implementazione Appledi “Zero configuration network”

“It just works”

Thursday, May 24, 12

Page 50: Apple Bonjour: Let's Talk!

Bonjour

• mDNS + DNS Service discovery• Address assignment• Name resolution

L’implementazione Appledi “Zero configuration network”

“It just works”

Thursday, May 24, 12

Page 51: Apple Bonjour: Let's Talk!

Bonjour

Thursday, May 24, 12

Page 52: Apple Bonjour: Let's Talk!

• Built-in con OSX e iOS.

Bonjour

Thursday, May 24, 12

Page 53: Apple Bonjour: Let's Talk!

• Built-in con OSX e iOS.• Installabile su Windows

Bonjour

Thursday, May 24, 12

Page 54: Apple Bonjour: Let's Talk!

• Built-in con OSX e iOS.• Installabile su Windows• Incluso in Safari e iTunes.

Bonjour

Thursday, May 24, 12

Page 55: Apple Bonjour: Let's Talk!

• Built-in con OSX e iOS.• Installabile su Windows• Incluso in Safari e iTunes.• Incluso nella Creative Suite 3 di Adobe

Bonjour

Thursday, May 24, 12

Page 56: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 57: Apple Bonjour: Let's Talk!

Who uses it

Thursday, May 24, 12

Page 58: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music

Thursday, May 24, 12

Page 59: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos

Thursday, May 24, 12

Page 60: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium

Thursday, May 24, 12

Page 61: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium• Adobe Creative Suite 3+

Thursday, May 24, 12

Page 62: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium• Adobe Creative Suite 3+• Things, Omnifocus

Thursday, May 24, 12

Page 63: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium• Adobe Creative Suite 3+• Things, Omnifocus• Cyberduck, Coda, SubEthaEdit

Thursday, May 24, 12

Page 64: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium• Adobe Creative Suite 3+• Things, Omnifocus• Cyberduck, Coda, SubEthaEdit• PostgreSQL

Thursday, May 24, 12

Page 65: Apple Bonjour: Let's Talk!

Who uses it• iTunes finds shared music• iPhotos finds shared photos• iChat, Skype, Adium• Adobe Creative Suite 3+• Things, Omnifocus• Cyberduck, Coda, SubEthaEdit• PostgreSQL• All uPNP-enabled devices

Thursday, May 24, 12

Page 66: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 67: Apple Bonjour: Let's Talk!

Who can also use it

Thursday, May 24, 12

Page 68: Apple Bonjour: Let's Talk!

Who can also use it

Thursday, May 24, 12

Page 69: Apple Bonjour: Let's Talk!

Using “jmDNS”, a Java implementationof multi-cast DNS for LAN service registration/discovery.

Who can also use it

Thursday, May 24, 12

Page 70: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 71: Apple Bonjour: Let's Talk!

uPNPUniversal plug-n-play

Thursday, May 24, 12

Page 72: Apple Bonjour: Let's Talk!

uPNP

• It’s just another implementation of Zeroconf

Universal plug-n-play

Thursday, May 24, 12

Page 73: Apple Bonjour: Let's Talk!

uPNP

• It’s just another implementation of Zeroconf• Media servers, Consoles, DLNA servers...

Universal plug-n-play

Thursday, May 24, 12

Page 74: Apple Bonjour: Let's Talk!

uPNP

• It’s just another implementation of Zeroconf• Media servers, Consoles, DLNA servers...• No authentication

Universal plug-n-play

Thursday, May 24, 12

Page 75: Apple Bonjour: Let's Talk!

uPNP

• It’s just another implementation of Zeroconf• Media servers, Consoles, DLNA servers...• No authentication• No mDNS

Universal plug-n-play

Thursday, May 24, 12

Page 76: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 77: Apple Bonjour: Let's Talk!

Bonjour: Service Publication

Thursday, May 24, 12

Page 78: Apple Bonjour: Let's Talk!

Bonjour: Service Publication

Thursday, May 24, 12

Page 79: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 80: Apple Bonjour: Let's Talk!

Bonjour: Service Publication

Thursday, May 24, 12

Page 81: Apple Bonjour: Let's Talk!

Bonjour: Service Publication

Thursday, May 24, 12

Page 82: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 83: Apple Bonjour: Let's Talk!

Bonjour: Query for services

Thursday, May 24, 12

Page 84: Apple Bonjour: Let's Talk!

Bonjour: Query for services

Thursday, May 24, 12

Page 85: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 86: Apple Bonjour: Let's Talk!

Bonjour: Connect

Thursday, May 24, 12

Page 87: Apple Bonjour: Let's Talk!

Bonjour: Connect

Thursday, May 24, 12

Page 88: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 89: Apple Bonjour: Let's Talk!

Sockets vs Streams

Thursday, May 24, 12

Page 90: Apple Bonjour: Let's Talk!

Sockets vs Streams

• Socket: unique communication endpoint on the network

Thursday, May 24, 12

Page 91: Apple Bonjour: Let's Talk!

Sockets vs Streams

• Socket: unique communication endpoint on the network

• Stream: one-way channel through which data is transmitted serially

Thursday, May 24, 12

Page 92: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 93: Apple Bonjour: Let's Talk!

We will use

Thursday, May 24, 12

Page 94: Apple Bonjour: Let's Talk!

We will use

• Stream sockets that are paired up to allow our app to send data over network using TCP/IP

Thursday, May 24, 12

Page 95: Apple Bonjour: Let's Talk!

We will use

• Stream sockets that are paired up to allow our app to send data over network using TCP/IP

• Asynchronous, non-blocking operations

Thursday, May 24, 12

Page 96: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 97: Apple Bonjour: Let's Talk!

3 Networking Classes

Thursday, May 24, 12

Page 98: Apple Bonjour: Let's Talk!

3 Networking Classes

Server class:

Thursday, May 24, 12

Page 99: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server

Server class:

Thursday, May 24, 12

Page 100: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

Thursday, May 24, 12

Page 101: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

Connection class:

Thursday, May 24, 12

Page 102: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

• Resolves Bonjour Services

Connection class:

Thursday, May 24, 12

Page 103: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

• Resolves Bonjour Services• Establishes connections to other servers

Connection class:

Thursday, May 24, 12

Page 104: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

• Resolves Bonjour Services• Establishes connections to other servers• Exchanges data via socket streams

Connection class:

Thursday, May 24, 12

Page 105: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

• Resolves Bonjour Services• Establishes connections to other servers• Exchanges data via socket streams

Connection class:

Server Browser class:

Thursday, May 24, 12

Page 106: Apple Bonjour: Let's Talk!

3 Networking Classes

• Creates a server• Announces the server via Bonjour

Server class:

• Resolves Bonjour Services• Establishes connections to other servers• Exchanges data via socket streams

Connection class:

• Browses for other servers via BonjourServer Browser class:

Thursday, May 24, 12

Page 107: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 108: Apple Bonjour: Let's Talk!

Application layers

Thursday, May 24, 12

Page 109: Apple Bonjour: Let's Talk!

Application layers

Thursday, May 24, 12

Page 110: Apple Bonjour: Let's Talk!

Application layers

Thursday, May 24, 12

Page 111: Apple Bonjour: Let's Talk!

Application layers

Thursday, May 24, 12

Page 112: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 113: Apple Bonjour: Let's Talk!

Down the Connection class

Thursday, May 24, 12

Page 114: Apple Bonjour: Let's Talk!

Down the Connection class

2 stream sockets (one for writing, one for reading)2 data buffers (one for each socket stream)

Thursday, May 24, 12

Page 115: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 116: Apple Bonjour: Let's Talk!

Network messages

Thursday, May 24, 12

Page 117: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

Thursday, May 24, 12

Page 118: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

3 different ways:

Thursday, May 24, 12

Page 119: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

1) Make all messages have the same length

3 different ways:

Thursday, May 24, 12

Page 120: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

1) Make all messages have the same length2) Append a marker to each message

3 different ways:

Thursday, May 24, 12

Page 121: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

1) Make all messages have the same length2) Append a marker to each message

3) Send some kind of header with some info about how long the message is

3 different ways:

Thursday, May 24, 12

Page 122: Apple Bonjour: Let's Talk!

Network messages

How do we separate network messages from one another?

1) Make all messages have the same length2) Append a marker to each message

3) Send some kind of header with some info about how long the message is

3 different ways:

Thursday, May 24, 12

Page 123: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 124: Apple Bonjour: Let's Talk!

3) Send some kind of header...

Thursday, May 24, 12

Page 125: Apple Bonjour: Let's Talk!

Writing messages

3) Send some kind of header...

Thursday, May 24, 12

Page 126: Apple Bonjour: Let's Talk!

Writing messages

• Convert an object into a byte array and measure its length

3) Send some kind of header...

Thursday, May 24, 12

Page 127: Apple Bonjour: Let's Talk!

Writing messages

• Convert an object into a byte array and measure its length

• Write the integer (4 bytes) that represents the length of our byte array to the stream

3) Send some kind of header...

Thursday, May 24, 12

Page 128: Apple Bonjour: Let's Talk!

Writing messages

• Convert an object into a byte array and measure its length

• Write the integer (4 bytes) that represents the length of our byte array to the stream

• Write the actual byte array to the stream

3) Send some kind of header...

Thursday, May 24, 12

Page 129: Apple Bonjour: Let's Talk!

Reading messages

Thursday, May 24, 12

Page 130: Apple Bonjour: Let's Talk!

Reading messages

• Read first 4 bytes and interpret those as an integer called “x”

Thursday, May 24, 12

Page 131: Apple Bonjour: Let's Talk!

Reading messages

• Read first 4 bytes and interpret those as an integer called “x”

• Read “x” number of bytes. (stop when enough data has been received)

Thursday, May 24, 12

Page 132: Apple Bonjour: Let's Talk!

Reading messages

• Read first 4 bytes and interpret those as an integer called “x”

• Read “x” number of bytes. (stop when enough data has been received)

• Turn received sequence of bytes back into an object.

Thursday, May 24, 12

Page 133: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 134: Apple Bonjour: Let's Talk!

It’s time!

Thursday, May 24, 12

Page 135: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 136: Apple Bonjour: Let's Talk!

Frameworks

Thursday, May 24, 12

Page 137: Apple Bonjour: Let's Talk!

• Low level: BSD socket lib

Frameworks

Thursday, May 24, 12

Page 138: Apple Bonjour: Let's Talk!

• Low level: BSD socket lib

Frameworks

Thursday, May 24, 12

Page 139: Apple Bonjour: Let's Talk!

• Low level: BSD socket lib

Frameworks

• High level: CFNetwork

Thursday, May 24, 12

Page 140: Apple Bonjour: Let's Talk!

• Low level: BSD socket lib

Frameworks

• High level: CFNetwork

• Bonjour iOS API: NSNetServices, CFNetServices

Thursday, May 24, 12

Page 141: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 142: Apple Bonjour: Let's Talk!

Creating a server

Thursday, May 24, 12

Page 143: Apple Bonjour: Let's Talk!

Creating a server

We first create a stream socket that will listen for

connections

Thursday, May 24, 12

Page 144: Apple Bonjour: Let's Talk!

Creating a server

We first create a stream socket that will listen for

connections

CFSocketRef listeningSocket;

Thursday, May 24, 12

Page 145: Apple Bonjour: Let's Talk!

Creating a server

We first create a stream socket that will listen for

connections

CFSocketRef listeningSocket;

using port number 0

Thursday, May 24, 12

Page 146: Apple Bonjour: Let's Talk!

Creating a server

We first create a stream socket that will listen for

connections

CFSocketRef listeningSocket;

using port number 0

zero???? O_o

Thursday, May 24, 12

Page 147: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 148: Apple Bonjour: Let's Talk!

Let’s publish the service

Thursday, May 24, 12

Page 149: Apple Bonjour: Let's Talk!

Let’s publish the service

Thursday, May 24, 12

Page 150: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 151: Apple Bonjour: Let's Talk!

Services/Servers Browser

Thursday, May 24, 12

Page 152: Apple Bonjour: Let's Talk!

Services/Servers Browser

Thursday, May 24, 12

Page 153: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 154: Apple Bonjour: Let's Talk!

Found!

Thursday, May 24, 12

Page 155: Apple Bonjour: Let's Talk!

Found!

Thursday, May 24, 12

Page 156: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 157: Apple Bonjour: Let's Talk!

Displaying servers list

Thursday, May 24, 12

Page 158: Apple Bonjour: Let's Talk!

Displaying servers list

Thursday, May 24, 12

Page 159: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 160: Apple Bonjour: Let's Talk!

Please let me join

Thursday, May 24, 12

Page 161: Apple Bonjour: Let's Talk!

Please let me join

Thursday, May 24, 12

Page 162: Apple Bonjour: Let's Talk!

Please let me join

Thursday, May 24, 12

Page 163: Apple Bonjour: Let's Talk!

Please let me join

Thursday, May 24, 12

Page 164: Apple Bonjour: Let's Talk!

Please let me join

Thursday, May 24, 12

Page 165: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 166: Apple Bonjour: Let's Talk!

The server receives the “request”

Thursday, May 24, 12

Page 167: Apple Bonjour: Let's Talk!

The server receives the “request”

Thursday, May 24, 12

Page 168: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 169: Apple Bonjour: Let's Talk!

The server welcomes you

Thursday, May 24, 12

Page 170: Apple Bonjour: Let's Talk!

The server welcomes you

Thursday, May 24, 12

Page 171: Apple Bonjour: Let's Talk!

The server welcomes you

Thursday, May 24, 12

Page 172: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 173: Apple Bonjour: Let's Talk!

The client receives the stream

Thursday, May 24, 12

Page 174: Apple Bonjour: Let's Talk!

The client receives the stream

Thursday, May 24, 12

Page 175: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 176: Apple Bonjour: Let's Talk!

Recap

Thursday, May 24, 12

Page 177: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP

Thursday, May 24, 12

Page 178: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP

Thursday, May 24, 12

Page 179: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers

Thursday, May 24, 12

Page 180: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers• Write/Read Network messages

Thursday, May 24, 12

Page 181: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers• Write/Read Network messages• Create and publish a server

Thursday, May 24, 12

Page 182: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers• Write/Read Network messages• Create and publish a server• Join a server

Thursday, May 24, 12

Page 183: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers• Write/Read Network messages• Create and publish a server• Join a server• Interaction between the client and the server

Thursday, May 24, 12

Page 184: Apple Bonjour: Let's Talk!

Recap• Apple Talk, TCP/IP• Bonjour flow cycle, uPNP• Application layers, Socket, Stream, Buffers• Write/Read Network messages• Create and publish a server• Join a server• Interaction between the client and the server

• One more thing: server broadcasts messages to connected clients

Thursday, May 24, 12

Page 185: Apple Bonjour: Let's Talk!

Thursday, May 24, 12

Page 186: Apple Bonjour: Let's Talk!

Any questions?Thank you.

Nicholas Valbusa@squallstar

Intesys - @Intesys_IT - www.intesys.it

Thursday, May 24, 12