The document discusses network messaging over Bonjour connections. It identifies three ways to separate network messages from one another: 1) Making all messages the same length, 2) Appending a marker to each message, or 3) Sending a header with length information for each message. The document focuses on building a native iOS application that allows clients to publish and browse for servers over Bonjour, and exchange data between connected clients using stream sockets. Key classes discussed are Server, Connection, and ServerBrowser classes.
Adapt and respond: keeping responsive into the futureChris Mills
Media queries blah blah blah. You've all heard that talk a hundred times, so I won't do that. Instead, I'll go beyond the obvious, looking at what we can do today to adapt our front-ends to different browsing environments, from mobiles and other alternative devices to older browsers we may be called upon to support.
You'll learn advanced media query and viewport tricks, including a look at @viewport, Insights into responsive images: problems, and current solutions, providing usable alternatives to older browsers with Modernizr and YepNope, other CSS3 responsive goodness - multi-col, Flexbox, and more, and finally where RWD is going — matchMedia, CSS4 media queries, etc.
How to use Bonjour in Java
The slides show you how to create bonjour based services on server site and use them on client site. All examples are completely written in Java.
The slides for my UBC Alumni talk on programming for the Cloud. I show Cloud Foundry as an example of an open cloud platform and how easy it is to create modular, scalable applications using it.
Adapt and respond: keeping responsive into the futureChris Mills
Media queries blah blah blah. You've all heard that talk a hundred times, so I won't do that. Instead, I'll go beyond the obvious, looking at what we can do today to adapt our front-ends to different browsing environments, from mobiles and other alternative devices to older browsers we may be called upon to support.
You'll learn advanced media query and viewport tricks, including a look at @viewport, Insights into responsive images: problems, and current solutions, providing usable alternatives to older browsers with Modernizr and YepNope, other CSS3 responsive goodness - multi-col, Flexbox, and more, and finally where RWD is going — matchMedia, CSS4 media queries, etc.
How to use Bonjour in Java
The slides show you how to create bonjour based services on server site and use them on client site. All examples are completely written in Java.
The slides for my UBC Alumni talk on programming for the Cloud. I show Cloud Foundry as an example of an open cloud platform and how easy it is to create modular, scalable applications using it.
In this talk, we'll cover the features of Apache Roller 5.0, and how it compares to other blog server options. We'll also look at typical deployment architectures, and examples of Roller sites in production today. The talk will discuss in detail some of the ongoing, student-driven work on OpenID and on better Media Blogging support.
http://www.us.apachecon.com/c/acus2009/sessions/280
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk we introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant OpenCredo
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk Daniel will introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include:
Envy - introducing inappropriate intimacy within services by creating a shared domain model, and how many teams deploy and use data stores incorrectly;
Wrath - failing to deal with the inevitable bad things that occur within a distributed system;
Sloth - ignoring the importance of NFRs; and
Lust - embracing the latest and greatest technology without evaluating the impact incurred by these choices.
This is an all-new 2016 version of Daniel's popular 'deadly sins talk' that was recently presented at QCon NY. The talk received 94% highest rating, and was the fifth most attended talk at the conference. Daniel plans to continually improve the presentation based on his learnings and attendee feedback.
Canary Analyze All The Things: How We Learned to Keep Calm and Release OftenC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1ph8Rq1.
Roy Rapoport discusses canary analysis deployment and observability patterns he believes that are generally useful, and talks about the difference between manual and automated canary analysis. Filmed at qconnewyork.com.
Roy Rapoport manages the Insight Engineering group at Netflix, responsible for building Netflix's Operational Insight platforms, including cloud telemetry, alerting, and real-time analytics. He originally joined Netflix as part of its datacenter-based IT/Ops group, and prior to transferring over to Product Engineering, was managing Service Delivery for IT/Ops.
We invented the Web. 20 years later we got Drupal.nbocquetlinalis
CERN is a remarkable organisation dealing with a unique set of challenges in managing its web environment.
This session looks at CERN's perspective on adopting Drupal as an Enterprise platform. We will be discussing what CERN does, the issues raised by such an international collaborative environment, and why CERN chose Drupal to meet these challenges.
Big Data and OpenStack, a Love Story: Michael Still, RackspaceOpenStack
Big Data and OpenStack, a Love Story
Audience: Intermediate
Topic: Storage
Abstract: Increasingly we’re being asked to build out clusters of machines to solve big data problems. These clusters can become quite large, reaching up to thousands of machines. Of course, our operational budgets don’t scale linearly like our machine counts do, and we’re asked to do more and more with less. This talk will explore how organisations around the world are using OpenStack to automate the management of their big data implementations, harnessing interesting characteristics of big data workloads along the way.
Speaker Bio: Michael Still, Rackspace
OpenStack core developer and former Nova PTL, as well as experienced software and reliability engineer. Part of the team that grew Google Mobile to being a billion dollar business. Director of linux.conf.au 2013. Author of The Definitive Guide to ImageMagick (www.imagemagickbook.com) and Practical MythTV (www.mythtvbook.com) from Apress, as well as a bunch of articles.
OpenStack Australia Day Government - Canberra 2016
https://events.aptira.com/openstack-australia-day-canberra-2016/
Forking Successfully - or is a branch better?Colin Charles
Forking Successfully or do you think a branch will work better? Learn from history, see what's current, etc. Presented at OSCON London 2016. This is forking beyond the github generation. And if you're going to do it, some tips on how you could be successful.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
In this talk, we'll cover the features of Apache Roller 5.0, and how it compares to other blog server options. We'll also look at typical deployment architectures, and examples of Roller sites in production today. The talk will discuss in detail some of the ongoing, student-driven work on OpenID and on better Media Blogging support.
http://www.us.apachecon.com/c/acus2009/sessions/280
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk we introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant OpenCredo
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk Daniel will introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include:
Envy - introducing inappropriate intimacy within services by creating a shared domain model, and how many teams deploy and use data stores incorrectly;
Wrath - failing to deal with the inevitable bad things that occur within a distributed system;
Sloth - ignoring the importance of NFRs; and
Lust - embracing the latest and greatest technology without evaluating the impact incurred by these choices.
This is an all-new 2016 version of Daniel's popular 'deadly sins talk' that was recently presented at QCon NY. The talk received 94% highest rating, and was the fifth most attended talk at the conference. Daniel plans to continually improve the presentation based on his learnings and attendee feedback.
Canary Analyze All The Things: How We Learned to Keep Calm and Release OftenC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1ph8Rq1.
Roy Rapoport discusses canary analysis deployment and observability patterns he believes that are generally useful, and talks about the difference between manual and automated canary analysis. Filmed at qconnewyork.com.
Roy Rapoport manages the Insight Engineering group at Netflix, responsible for building Netflix's Operational Insight platforms, including cloud telemetry, alerting, and real-time analytics. He originally joined Netflix as part of its datacenter-based IT/Ops group, and prior to transferring over to Product Engineering, was managing Service Delivery for IT/Ops.
We invented the Web. 20 years later we got Drupal.nbocquetlinalis
CERN is a remarkable organisation dealing with a unique set of challenges in managing its web environment.
This session looks at CERN's perspective on adopting Drupal as an Enterprise platform. We will be discussing what CERN does, the issues raised by such an international collaborative environment, and why CERN chose Drupal to meet these challenges.
Big Data and OpenStack, a Love Story: Michael Still, RackspaceOpenStack
Big Data and OpenStack, a Love Story
Audience: Intermediate
Topic: Storage
Abstract: Increasingly we’re being asked to build out clusters of machines to solve big data problems. These clusters can become quite large, reaching up to thousands of machines. Of course, our operational budgets don’t scale linearly like our machine counts do, and we’re asked to do more and more with less. This talk will explore how organisations around the world are using OpenStack to automate the management of their big data implementations, harnessing interesting characteristics of big data workloads along the way.
Speaker Bio: Michael Still, Rackspace
OpenStack core developer and former Nova PTL, as well as experienced software and reliability engineer. Part of the team that grew Google Mobile to being a billion dollar business. Director of linux.conf.au 2013. Author of The Definitive Guide to ImageMagick (www.imagemagickbook.com) and Practical MythTV (www.mythtvbook.com) from Apress, as well as a bunch of articles.
OpenStack Australia Day Government - Canberra 2016
https://events.aptira.com/openstack-australia-day-canberra-2016/
Forking Successfully - or is a branch better?Colin Charles
Forking Successfully or do you think a branch will work better? Learn from history, see what's current, etc. Presented at OSCON London 2016. This is forking beyond the github generation. And if you're going to do it, some tips on how you could be successful.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
4. Few words about me
Nicholas Valbusa
@squallstar
Thursday, May 24, 12
5. Few words about me
Nicholas Valbusa
@squallstar
Web Developer since 2004
Thursday, May 24, 12
6. Few words about me
Nicholas Valbusa
@squallstar
Web Developer since 2004
Mobile Developer since 2010
Thursday, May 24, 12
7. Few words about me
Nicholas Valbusa
@squallstar
Web Developer since 2004
Mobile Developer since 2010
WHYMCA 2011: Webkit meets Native development
Thursday, May 24, 12
16. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
Thursday, May 24, 12
17. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
• Socket, Stream, Buffers
Thursday, May 24, 12
18. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
• Socket, Stream, Buffers
• Create and publish a server
Thursday, May 24, 12
19. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
• Socket, Stream, Buffers
• Create and publish a server
• Join a server
Thursday, May 24, 12
20. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
• Socket, Stream, Buffers
• Create and publish a server
• Join a server
• Network messages
Thursday, May 24, 12
21. We’ll talk about
• TCP/IP
• Apple Bonjour, uPNP
• Socket, Stream, Buffers
• Create and publish a server
• Join a server
• Network messages
• Other...
Thursday, May 24, 12
23. We’ll see
• A screencast native application
Thursday, May 24, 12
24. We’ll see
• A screencast native application
• Something like chats
Thursday, May 24, 12
25. We’ll see
• A screencast native application
• Something like chats
• Where server can send images and other things
Thursday, May 24, 12
26. 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
32. “Once upon a time”
Apple Talk
Thursday, May 24, 12
33. “Once upon a time”
Apple Talk
• Protocollo usato nelle reti Macintosh
Thursday, May 24, 12
34. “Once upon a time”
Apple Talk
• Protocollo usato nelle reti Macintosh
• Condivisione di file e stampanti
Thursday, May 24, 12
35. “Once upon a time”
Apple Talk
• Protocollo usato nelle reti Macintosh
• Condivisione di file e stampanti
• Uno dei primi sistemi plug-n-play
Thursday, May 24, 12
39. “things changes”
TCP/IP
• Negli anni novanta, con la diffusione del TCP/IP
Apple dismesse AppleTalk
Thursday, May 24, 12
40. “things changes”
TCP/IP
• Negli anni novanta, con la diffusione del TCP/IP
Apple dismesse AppleTalk
• Finalmente i Mac potevano connettersi con
altri sistemi operativi
Thursday, May 24, 12
46. Bonjour
L’implementazione Apple
di “Zero configuration network”
Thursday, May 24, 12
47. Bonjour
L’implementazione Apple
di “Zero configuration network”
“It just works”
Thursday, May 24, 12
48. Bonjour
L’implementazione Apple
di “Zero configuration network”
“It just works”
• mDNS + DNS Service discovery
Thursday, May 24, 12
49. Bonjour
L’implementazione Apple
di “Zero configuration network”
“It just works”
• mDNS + DNS Service discovery
• Address assignment
Thursday, May 24, 12
50. Bonjour
L’implementazione Apple
di “Zero configuration network”
“It just works”
• mDNS + DNS Service discovery
• Address assignment
• Name resolution
Thursday, May 24, 12
52. Bonjour
• Built-in con OSX e iOS.
Thursday, May 24, 12
53. Bonjour
• Built-in con OSX e iOS.
• Installabile su Windows
Thursday, May 24, 12
54. Bonjour
• Built-in con OSX e iOS.
• Installabile su Windows
• Incluso in Safari e iTunes.
Thursday, May 24, 12
55. Bonjour
• Built-in con OSX e iOS.
• Installabile su Windows
• Incluso in Safari e iTunes.
• Incluso nella Creative Suite 3 di Adobe
Thursday, May 24, 12
71. uPNP
Universal plug-n-play
Thursday, May 24, 12
72. uPNP
Universal plug-n-play
• It’s just another implementation of Zeroconf
Thursday, May 24, 12
73. uPNP
Universal plug-n-play
• It’s just another implementation of Zeroconf
• Media servers, Consoles, DLNA servers...
Thursday, May 24, 12
74. uPNP
Universal plug-n-play
• It’s just another implementation of Zeroconf
• Media servers, Consoles, DLNA servers...
• No authentication
Thursday, May 24, 12
75. uPNP
Universal plug-n-play
• It’s just another implementation of Zeroconf
• Media servers, Consoles, DLNA servers...
• No authentication
• No mDNS
Thursday, May 24, 12
90. Sockets vs Streams
• Socket: unique communication
endpoint on the network
Thursday, May 24, 12
91. Sockets vs Streams
• Socket: unique communication
endpoint on the network
• Stream: one-way channel through
which data is transmitted serially
Thursday, May 24, 12
94. 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
95. 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
100. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Thursday, May 24, 12
101. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
Thursday, May 24, 12
102. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
• Resolves Bonjour Services
Thursday, May 24, 12
103. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
• Resolves Bonjour Services
• Establishes connections to other servers
Thursday, May 24, 12
104. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
• Resolves Bonjour Services
• Establishes connections to other servers
• Exchanges data via socket streams
Thursday, May 24, 12
105. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
• Resolves Bonjour Services
• Establishes connections to other servers
• Exchanges data via socket streams
Server Browser class:
Thursday, May 24, 12
106. 3 Networking Classes
Server class:
• Creates a server
• Announces the server via Bonjour
Connection class:
• Resolves Bonjour Services
• Establishes connections to other servers
• Exchanges data via socket streams
Server Browser class:
• Browses for other servers via Bonjour
Thursday, May 24, 12
117. Network messages
How do we separate network messages from one another?
Thursday, May 24, 12
118. Network messages
How do we separate network messages from one another?
3 different ways:
Thursday, May 24, 12
119. Network messages
How do we separate network messages from one another?
3 different ways:
1) Make all messages have the same length
Thursday, May 24, 12
120. Network messages
How do we separate network messages from one another?
3 different ways:
1) Make all messages have the same length
2) Append a marker to each message
Thursday, May 24, 12
121. Network messages
How do we separate network messages from one another?
3 different ways:
1) Make all messages have the same length
2) Append a marker to each message
3) Send some kind of header with some info about how long the
message is
Thursday, May 24, 12
122. Network messages
How do we separate network messages from one another?
3 different ways:
1) Make all messages have the same length
2) Append a marker to each message
3) Send some kind of header with some info about how long the
message is
Thursday, May 24, 12
124. 3) Send some kind of header...
Thursday, May 24, 12
125. 3) Send some kind of header...
Writing messages
Thursday, May 24, 12
126. 3) Send some kind of header...
Writing messages
• Convert an object into a byte array and measure its length
Thursday, May 24, 12
127. 3) Send some kind of header...
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
Thursday, May 24, 12
128. 3) Send some kind of header...
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
Thursday, May 24, 12
130. Reading messages
• Read first 4 bytes and interpret those as an integer called “x”
Thursday, May 24, 12
131. 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
132. 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
143. Creating a server
We first create a stream
socket that will listen for
connections
Thursday, May 24, 12
144. Creating a server
We first create a stream
socket that will listen for
connections
CFSocketRef listeningSocket;
Thursday, May 24, 12
145. Creating a server
We first create a stream
socket that will listen for
connections
CFSocketRef listeningSocket;
using port number 0
Thursday, May 24, 12
146. 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
181. 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
182. 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
183. 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
184. 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