For distributed computing project course 236371 Technion, March 2011 Alex Dvinsky.

Slides:



Advertisements
Similar presentations
Android Application Development A Tutorial Driven Course.
Advertisements

Introduction 1-1 Chapter 3 Transport Layer Intro and Multiplexing Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley.
CSE 4939 Alex Riordan Brian Pruitt-Goddard Remote Unit Testing.
Developers: Alexey Rastvortsev, Ilya Kolchinsky Supervisors: Roy Friedman, Alex Kogan.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
Android: Hello World Frank Xu Gannon University. Steps Configuration ▫Android SDK ▫Android Development Tools (ADT)  Eclipse plug-in ▫Android SDK and.
Apache Axis: A Set of Java Tools for SOAP Web Services.
(NHA) The Laboratory of Computer Communication and Networking Network Host Analyzer.
An Introduction to Internetworking. Why distributed systems - Share resources (devices & CPU) - Communicate people (by transmitting data)
1 School of Computing Science Simon Fraser University CMPT 771/471: Internet Architecture and Protocols Socket Programming Instructor: Dr. Mohamed Hefeeda.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
Chapter 23: ARP, ICMP, DHCP IS333 Spring 2015.
TENA Test and Training Enabling Architecture. TENA TENA is used in range environments, often in the L portion of LVC Slightly different emphasis; small.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 8: Implementing and Managing Printers.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
SEEM4570: XAMPP, Eclipse, Summary of Html Kangfei Zhao Room 711,ERB
Lab 1 Bulletin Board System Farnaz Moradi Based on slides by Andreas Larsson 2012.
Android Application Development 2013 PClassic Chris Murphy 1.
Interconnection Protocol Mustafa Kara Term Work.
Speak A Simple VoIP Application Project 2 Due date: March 3 rd by 11:59pm.
Web server and web browser It’s a take and give policy in between client and server through HTTP(Hyper Text Transport Protocol) Server takes a request.
Android Introduction Platform Overview.
About me Yichuan Wang Android Basics Credit goes to Google and UMBC.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Socket Programming References: redKlyde ’ s tutorial set Winsock2 for games (gamedev.net)
Android SMIL Messenger Presented By: Alex Povkov Brad Gardner Jeremy Spitzig Santiago Jamriska.
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
1 © 2006 Cisco Systems, Inc. All rights reserved. Session Number Presentation_ID Cisco Confidential Configuring Attendant Console.
LWIP TCP/IP Stack 김백규.
The Pipeline Processing Framework LSST Applications Meeting IPAC Feb. 19, 2008 Raymond Plante National Center for Supercomputing Applications.
LWIP TCP/IP Stack 김백규.
TCP/IP Essentials A Lab-Based Approach Shivendra Panwar, Shiwen Mao Jeong-dong Ryoo, and Yihan Li Chapter 5 UDP and Its Applications.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Network Services Networking for Home and Small Businesses – Chapter 6.
Chapter Three Network Protocols By JD McGuire ARP Address Resolution Protocol Address Resolution Protocol The core protocol in the TCP/IP suite that.
Android for Java Developers Denver Java Users Group Jan 11, Mike
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Application Layer 2-1 Chapter 2 Application Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.
Farnaz Moradi Based on slides by Andreas Larsson 2013.
Application Block Diagram III. SOFTWARE PLATFORM Figure above shows a network protocol stack for a computer that connects to an Ethernet network and.
Android Security Model that Provide a Base Operating System Presented: Hayder Abdulhameed.
2: Application Layer1 Chapter 2 Application Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross.
Protocols COM211 Communications and Networks CDA College Olga Pelekanou
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Distributed systems (NET 422) Prepared by Dr. Naglaa Fathi Soliman Princess Nora Bint Abdulrahman University College of computer.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Ryan Rasmussen Maggie Krause Jiajun Yang. Hardware Progress Mechanical assembly complete Received APM case and power module last week Connected wi-fi.
© 2008 by Wind River; made available under the EPL v1.0 | 19-Nov-2008 TCF The Target Communication Framework Michael Scharf, Wind River wiki.eclipse.org/DSDP/TM/TCF_FAQ.
SVN code server for AliRoot P.Hristov 18/10/2007.
How to develop a VoIP softphone in C# that enables SIP Instant Messaging (IM) This presentation describes how to create a softphone in C# that allows you.
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
NDN-Android: NDN Networking Stack for Android Platform
Windows Communication Foundation and Web Services
Android Mobile Application Development
Configuring Attendant Console
Boots Cassel Villanova University
Android Studio, Android System Basics and Git
Android.
Tango Administrative Tools
Development-Introduction
CMPE419 Mobile Application Development
Transport Protocols Relates to Lab 5. An overview of the transport protocols of the TCP/IP protocol suite. Also, a short discussion of UDP.
* Essential Network Security Book Slides.
Application Development A Tutorial Driven Course
Chapter 7 –Implementation Issues
An Introduction to Internetworking
CMPE419 Mobile Application Development
Exceptions and networking
Presentation transcript:

For distributed computing project course Technion, March 2011 Alex Dvinsky

What is it? An IP based networking library Targeted for networking in groups Allows building custom protocol stacks Has lots of layers to build from Is multi-platform J2ME Android JSE.Net Compact Framework

Why do we need it? Allows us to focus on the logic of our application, rather then implementing commonly needed stuff Dealing with network issues can be non trivial Limiting network spec of some platforms Atop of it - poor implementation of the spec by some vendors Same application code on supported platforms Less threading concerns

What do we get from it? Discovery, View Management & Failure Detection Inconsistent views Consistent views Broad/Multi casting Message reliability (incl. multi/broadcast messages) Ordering Sender FIFO Total Fragmentation/Reassembly Flow control JiBX generated classes serialization support … more …

Where do we get it? SVN repository: Username (mail): Password: DslProject Project GCFrameworkDist Branches folder contain past versions Trunk folder is the current state, bug fixes and new features will be put here All distributions also contain sources

Where do we start? … With development environment setup Mobile development is somewhat different from development for PCs There are more (interconnected) tools Less standards Less documentation Much less stability Harder –to-impossible on-device debugging Networking on devices and emulators does not always come out of the box I’ll give you the initial installation instructions and share what experience I have, but prepare to Google a lot

Where do we start? (Cont’d) In the same repository there’s a sample project GCChatCLI It’s a JavaSE command line interface for a basic, J2ME compatible, chat core Shows creation, initialization and destruction of a protocol stack Message and view change handling Android UI is to follow shortly Is somewhat tricky both to build and run I’ll send instructions for this too But gives a nice example of building multi-platform app.

Documentation? No external documentation  Many layers have a JavaDoc header explaining their use, assumptions, suggested placement within a stack and other properties Please contact me with any questions/requests/bug suspicions

Some overview The usage of the middleware is by building custom protocol stack(s) The stacks consist from layers Communication between layers is done by handling events Bottom layer is always a network layer – the one that sends and receives data on sockets Top layer is always an application layer – implemented by app. developer. Sends messages and may respond to some events In most cases lower layers of the stack serve those above them, but there are exceptions All communicating hosts must run with identical stacks

Some overview (cont’d 1) Most of the layers in stack handle their events in a single, designated, thread and thus are not built to be multithreaded This thread is to be protected from application, there’s a special layer for this as well

Some overview (cont’d 2) As messages propagate through the stack, layers add headers to it, if the message goes down and extract them if the message goes up Every layer on sending host communicates with very same layer on receiving hosts through its header only Every message has an ID that identifies it Every received message contains information about who its sender is

Some overview (cont’d 3) In J2ME, there’s a very limited set of platform-supplied data structures. The middleware contains adapted to J2ME versions of most commonly used Java data structures (from “GNU Classpath”) All layers’ headers are defined by.XML files, those files can be “compiled” to Java by external tool – JiBX; and for the classes JiBX produces, middleware tools can generate serializers, that handle integration and extraction of these headers from messages. Though built for internal uses, application developers can benefit from these tools

Some pitfalls Java versions are not fully compatible with each other J2ME Android JSE When building a multi- platform app, consider finding the largest common part and put it in “core” project The list of intended supported platform dictates what java version the “core” must be compatible to

Some pitfalls (cont’d 1) In mobile applications you need to explicitly request permissions for multiple operations (declare you use the functionality), especially such as network or disk/flash access The J2ME installed on win mobile phones we have is called “Jblend”. It’s impossible to have server TCP sockets in it, thus it the middleware can only be used with UDP In Jblend it’s also impossible to have more than one server UDP socket and more than one client UDP socket opened at the same time, thus only one stack can be used per application and UDPNetworkLayer must be instructed to always close its client UDP socket

Some pitfalls (cont’d 2) In JBlend it’s also impossible to have class implementing non-public (package-visible) interface. It just fails to run There’s another version of J2ME you can install on those Win mobile phones, called “Jbed”; don’t, - it’s even worse and doesn’t support server sockets of any kind In Android, it’s important to specify settings like “layout_width” and “layout_height” event if it seems to make no sense. Otherwise it just won’t work with no clear error message

Some pitfalls (cont’d 3) Firewalls block messages You’d be surprised to know how often I fell to this one If testing on emulators, it’s important to make sure they can talk to each other Android emulators can’t without specific configuration. More about it in installation instructions J2ME emulator, at least the one from Samsung SDK, just use JavaSE for all its “emulation” including sockets. Thus, it’s both unclear which interface is used and not possible to have two running instances be configured to the same port VMs can help here