Pundik Dmitry & Blekhman Alexandr 2001/02 Final Presentation Semester B הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל.

Slides:



Advertisements
Similar presentations
Performed by: Rea Yeheskel Yair Sommer Instructor: Idan Katz Cooperated with:Motorola הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion - Israel.
Advertisements

Performed by: Yair Sommer Rea Yeheskel Instructor: Idan Katz In Cooperation with:Motorola הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion -
Basic Socket Programming with Java. What is a socket?  Generally refers to a stream connecting processes running in different address spaces (across.
Advanced Java Class Network Programming. Network Protocols Overview Levels of Abstraction –HTTP protocol: spoken by Web Servers and Web Clients –TCP/IP:
1 Prepared by Konstantin Sinyuk LIS Distributed System Directed by Eli Shoshan Assistants: Oren Haggai Alex Birman.
Socket Programming.
Performed by: Edy Candel Yaakov Rakotch Instructor: Konstantin Sinyuk Cooperated with: PowerLoc המעבדה למערכות ספרתיות מהירות High speed digital systems.
Performed by: Pundik Dmitry & Blekhman Alexandr Instructor: Konstanin Sinyuk Cooperated with: Just™ project ( Eran and Haim) המעבדה למערכות ספרתיות מהירות.
1 Java Networking – Part I CS , Spring 2008/9.
Pundik Dmitry & Blekhman Alexandr 2001/02 Final Presentation Semester A הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל.
Performed by: Oren Shalgi Alexander Badyan Instructor: Erez Zilber המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
CS3771 Today: network programming with sockets  Previous class: network structures, protocols  Next: network programming Sockets (low-level API) TODAY!
Performed by: Yair Sommer Rea Yeheskel Instructor: Idan Katz Cooperated with:Motorola הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion - Israel.
Performed by: Uri Niv Hadas Preminger Instructor: Mony Orbach Cooperated with: Physics Dep. המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory.
Performed by: Niv Tokman Guy Levenbroun Instructor: Leonid Boudniak המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון.
Pundik Dmitry & Blekhman Alexandr 2001/02 Midterm Presentation הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל Pundik.
Performed by: Ran Ruder Li-Tal Mashiach Instructor: Konstantin Sinyuk המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון.
LAN Access Point Extension Pundik Dmitry & Blekhman Alexandr Directed by Konstantin Sinyuk Winter 2001/2 HSDSL Lab.
Performed by: Kobbi Kfir-El Ohad Brandelstein Instructor: Konstantin Sinyuk המעבדה למערכות ספרתיות מהירות High Speed Digital Systems Laboratory הטכניון.
Network Programming. The biggest difficult part in networking programming lies in understanding networking not in using java networking package. Since.
Performed by: Vilk Pavel Pioter Drubetskoy Instructor: Mony Orbach Technion Digital laboratory המעבדה למערכות ספרתיות מהירות High speed digital systems.
Performed by: Ehud Bahat & Amir Levy Instructor: Erez Zilber Cooperated with: המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון.
Performed by: Yair Sommer Rea Yeheskel Instructor: Idan Katz In Cooperation with:Motorola הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion -
1 School of Computing Science Simon Fraser University CMPT 771/471: Internet Architecture and Protocols Socket Programming Instructor: Dr. Mohamed Hefeeda.
Performed by: Gadi Marcu & Tomer Alon Instructor: Erez Zilber המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
Performed by: Ron Herman & Ofir Shentzer Instructor: Mony Orbach Cooperated with: Route Link המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory.
Performed by: Oron Port Instructor: Mony Orbach המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי לישראל הפקולטה.
Performed by: Alex Shpiner Eyal Azran Instructor: Boaz Mizrachi המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
Performed by:Teb David Krelshtein Leonid Instructor: Itzkovitz Michael המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון.
Performed by: Tomer Naftali Yokev Maya Instructor: Evgeny Rivkin המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
Device Driver for Generic ASC Module - Project Presentation - By: Yigal Korman Erez Fuchs Instructor: Evgeny Fiksman Sponsored by: High Speed Digital Systems.
Performed by: Shai Yaakobovith Baroch Oren Instructor: Yivgeny Rivkin Cooperated with:PSL Lab המעבדה למערכות ספרתיות מהירות High speed digital systems.
Final Presentation Spring 2003 Project ID: D0822 Project Name: WinCE integrating BT media share application Supervisor: Evgeny Rivkin Performed by: Maya.
Performed by: Gerber Alex, Koren Chen. Instructor: Mony Orbach המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
Networking with Java CSc 335 Object-Oriented Programming and Design Spring 2009.
CEG3185 Tutorial 4 Prepared by Zhenxia Zhang Revised by Jiying Zhao (2015w)
Performed by : Segev Eran Rokach Oren Supervisor: Michael Itzkovitz. המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון.
Performed by : Matan Cohen & Sefi Cohen Instructor: Mony Orbach המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
1 Chapter Client-Server Interaction. 2 Functionality  Transport layer and layers below  Basic communication  Reliability  Application layer.
המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion - Israel institute of technology.
XML Protocol for Manipulation and Control Elias Khoury Othman Kanj Final Presentation Supervisor: Mony Orbach הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
CSP Implementing a network 1 Implementing a network Lecturer: Smilen Dimitrov Cross-sensorial processing – MED7.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Chapter 2 Applications and Layered Architectures Sockets.
Li Tak Sing COMPS311F. Case study: consumers and producers A fixed size buffer which can hold at most certain integers. A number of producers which generate.
© Lethbridge/Laganière 2005 Chap. 3: Basing Development on Reusable Technology The Client-Server Architecture A distributed system is a system in.
L 2 - 1 3( 1/ 20) : Java Network Programming. The Socket API The previous contents describe client-server interaction that application programs use when.
Introduction to Socket Programming in Android Jules White Bradley Dept. of Electrical and Computer Engineering Virginia Tech
המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion - Israel institute of technology.
Bluetooth on CE. Mid - Presentation Roman Zoltsman & Oren Haggai Group /2001 Instructor: Nir Borenshtein HSDSL Lab. Technion.
Performed by: TZAFRIR TZOUR BARUCH SHAPIRA Instructor: MONI ORBACH המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
Performed by: Yair Sommer Rea Yeheskel Instructor: Idan Katz In Cooperation with:Motorola הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל Technion -
Performed by: Yarovoy Boris Dubossarsky Maxim Instructor: Michael Itzkovitz המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון.
Prepared by Dr. Jiying Zhao University of Ottawa Canada.
UNIT-6. Basics of Networking TCP/IP Sockets Simple Client Server program Multiple clients Sending file from Server to Client Parallel search server.
Networking with JavaN-1 Outline Client-Server Example Steps required on the server side Steps required on the client side.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Performed by: Uri Kogan Instructor: Konstantin Siniuk Cooperated with: המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון.
Agenda Socket Programming The OSI reference Model The OSI protocol stack Sockets Ports Java classes for sockets Input stream and.
Performed by: Lior Zitalni & Yagel Metuky Instructor: Boaz Mizrahi המעבדה למערכות ספרתיות מהירות High speed digital systems laboratory הטכניון - מכון טכנולוגי.
SPL/2010 Reactor Design Pattern 1. SPL/2010 Overview ● blocking sockets - impact on server scalability. ● non-blocking IO in Java - java.niopackage ●
Sockets A popular API for client-server interaction.
Bluetooth on CE. Roman Zoltsman & Oren Haggai 2000/2001 HSDSL Lab. Technion.
Spring 08-Winter 09 semester Satellite Inner communication – SpaceWire & CAN Bus By: Michael Tsitrin, Asaf Modelevsky Instructor: Ina Ravkin הטכניון -
Prepared by: Dr. Abdallah Mohamed, AOU-KW Unit9: Internet programming 1.
Object-Orientated Analysis, Design and Programming
Exceptions and networking
Presentation transcript:

Pundik Dmitry & Blekhman Alexandr 2001/02 Final Presentation Semester B הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל Pundik Dmitry & Blekhman Alexandr Instructor: Konstanin Sinyuk

Pundik Dmitry & Blekhman Alexandr 2001/02 Project Goals In our project we build communication infrastructure that will be used in another projects in CE Lab (Just ™ and Bluetooth game). Our goal is to come out with a reliable and easy to use multipoint BlueTooth stack and design a complete API in Java for common communication tasks. Our stack will be working both on Pc and on iPaq. The server will be able to split the work between two Bluetooth units.

Pundik Dmitry & Blekhman Alexandr 2001/02 BlueTooth Overview Short range wireless technology. Network solution for handheld devices.

Pundik Dmitry & Blekhman Alexandr 2001/02 System Overview LAN Client 1Client 2Client 7 BT PC LAN Access Point

Pundik Dmitry & Blekhman Alexandr 2001/02 Software Final Architecture In the end of the first part of the project, we have released two objects: 1. RFSocket / RFSocketCE – an object that is responsible for BT data transfer through a virtual socket. 2. RFServerSocket / RFServerSocketCE – an object that is responsible for the server side of BT connection. These objects allow transparent use of client/server architecture over Bluetooth network.

Pundik Dmitry & Blekhman Alexandr 2001/02 RFServerSocket API Main methods: Connect : initializes the connection, performs inquiry, builds the database of clients and services, creates the connections to all the clients found. Accept : returns a reference to one RFSocket of all active connections at a time. Close : closes all connections, destroys databases, and exits.

Pundik Dmitry & Blekhman Alexandr 2001/02 RFServerSocket API Diagram RFServerSocket: a data structure of connected RFSockets, one RFSocket for every connected device: Connect Accept Close Connected socket

Pundik Dmitry & Blekhman Alexandr 2001/02 RFSocket API Main methods: GetInputStream : returns the stream, that reads the data. The stream implements Java’s inputStream interface. GetOutputStream : returns the stream, that sends the data. The stream implements Java’s outputStream interface. Disconnect : disconnects the client the object refers to, and notifies the server about the socket termination.

Pundik Dmitry & Blekhman Alexandr 2001/02 RFSocket API Diagram GetInputStream RFInputStream Read GetOutputStream RFOutputStream Write Disconnect Call the server for disconnection RFSocket

Pundik Dmitry & Blekhman Alexandr 2001/02 JNI The Java Native Interface (JNI) allows Java code to operate with applications written in other languages. You can call functions and methods implemented in other languages, such as C or C++. This can be used in integrating an already existing (legacy) application into a Java application.

Pundik Dmitry & Blekhman Alexandr 2001/02 Porting to Java We wrote the classes in C/C++, and compiled them into a Dynamic Link Library (DLL). We created shell classes in Java and listed there all methods of the C++ classes. We connected between Java side and C++ side with the aid of JNI. Upon the creation of Java object, a corresponding C++ object was created in the DLL, and when a method was called from Java, the call was redirected to the object in DLL and performed there.

Pundik Dmitry & Blekhman Alexandr 2001/02 Complement with Java standard Java specifies a standard for communication SW. Our classes (RFInputStream and RFOutputStream) extend standard Java InputStream and OutputStream interfaces, so they can be used and exchanged automatically, as if they were intrinsic Java classes. We put them into Java mutually synchronized objects and this makes easy the transfer of any serializable Java object.

Pundik Dmitry & Blekhman Alexandr 2001/02 Integration We adjusted the classes and the operation scheme to the needs of our companion project. We added many new features and modes to our classes:  Synchronization (stability)  Blocking mode for reading  Buffers (performance)

Pundik Dmitry & Blekhman Alexandr 2001/02 Stack hierarchy We added several levels of abstraction on top of standard BlueTooth layers. BlueTooth stack API RFServices package (C++) RFSocket + RFServerSocket (Java) JNI RFInputStream + RFOutputStream (Java)

Pundik Dmitry & Blekhman Alexandr 2001/02 Server – connection Server initializes Server does not proceed until there is at least one client around Server performs inquiry and device discovery Server checks if there is any connected device around RFServerSocket serverSocket = new RFServerSocket(); int clientNum = 0; serverSocket.Connect(); while (clientNum == 0) { clientNum=serverSocket.GetC onnectionsNumber(); }

Pundik Dmitry & Blekhman Alexandr 2001/02 Server – stream setup If any device found, we proceed: We get the socket that is connected to the first device We extract Input stream from the socket and build Java standard ObjectInputStream upon it. The same with OutputStream Transfer of objects through the connection is trivial RFSocket socket = serverSocket.Accept(); obj_in = new ObjectInputStream(socket.getInputStrea m()); obj_out = new ObjectOutputStream(socket.getOutputStr eam()); obj_out.writeObject(new String("String from server"));

Pundik Dmitry & Blekhman Alexandr 2001/02 Client – connection Client prepares initial socket object Client gets ready for connection We wait for server to bind a connection RFSocketCE socket = new RFSocketCE(); socket.Init(); while (!socket.IsConnected()) { synchronized (this) { try { wait(1000); } catch (Exception ee) {} }

Pundik Dmitry & Blekhman Alexandr 2001/02 Client – stream setup Once the connection is established, we extract Input stream from the socket and build Java standard ObjectInputStream upon it. The same with OutputStream Transfer of objects through the connection is trivial obj_out = new ObjectOutputStream(socket.getOutputStr eam()); obj_in = new ObjectInputStream(socket.getInputStrea m()); obj_out.writeObject(new String("String from client"));

Pundik Dmitry & Blekhman Alexandr 2001/02 Original Design According to the original design, our classes were based upon DigiAnswer API, that was supplied with the DigiAnswer BT device. This made easy the handling of data structures for clients, serial port profiles and virtual COM ports. We established a complete operational stack in Java over DigiAnswer API and tested its work with Jini system. We managed to run Jini’s image service with considerable ease and good performance.

Pundik Dmitry & Blekhman Alexandr 2001/02 Lacks of DigiAnswer API At tests, it appeared that DigiAnswer stack is unstable. We saw that sometimes we were loosing small amounts of data. This is unacceptable in new operation scheme, in particular since stream synchronization demands exact transfer of data during handshake process. We were forced to change our BlueTooth devices and base our API on another stack implementation.

Pundik Dmitry & Blekhman Alexandr 2001/02 A solution We moved to Philips Bluetooth cards. We made changes to SW that Oren wrote in C++ for Philips devices and adjusted it to our operation concept. Then, we established once again Java shell over the C++ code. At the end of this process, we have good reliable BlueTooth stack that is accessed through the same API as the previous one (DigiAnswer)

Pundik Dmitry & Blekhman Alexandr 2001/02 Philips Bluetooth devices Compared to DigiAnswer devices, Philips units have low-level interface. Philips units are attached to the computer through a COM port. The code for Philips stack came to us as a heritage from Oren. Since the units require control on a very low level, there are lots of functions that are responsible for event handling, for wrapping around packets of data or code according to their type.

Pundik Dmitry & Blekhman Alexandr 2001/02 Operative difficulties With both stacks, search for new clients was taking about 10 seconds, at this time no data could be transferred. Since device discovery has to be done rather frequently at LAP, this setup could not be satisfactory. Our solution is to separate the work between 2 BlueTooth units working together on the LAP. Discovery will be done with DigiAnswer unit, and data transfer – with Philips unit. Philips unit is reliable on data transfer, while discovery is data loss safe.

Pundik Dmitry & Blekhman Alexandr 2001/02 Two units Connection and data transfer with open sockets (RFSockets) Discovered device New device comes into range Device is discovered Empty connection slot Read/Write data Connected socket 3 Connected socket 4 DigiAnswer unitPhilips unit Device discovery (RFServerSocket) Connect

Pundik Dmitry & Blekhman Alexandr 2001/02 Enhancements Our stack is universal and can be used either on PC or on iPaq. On PC, the system is built with Visual Studio 6 and relies on JDK 1.2. On iPaq, the system is built with Embedded Studio 3 and relies on Jeode Personal Java 1.2 (eq. to JDK 1.1.8) Since our API is ported to Java, it is generic and can be used on any system with Java version of 1.2 and higher.

Pundik Dmitry & Blekhman Alexandr 2001/02 Server on iPaq We help another team at the lab with their work on BlueTooth game. To assist them, we developed a variation of our software where the server is located on iPaq. Possible usage of iPaq as LAP. Usage scheme and API remains.

Pundik Dmitry & Blekhman Alexandr 2001/02 Summary Complete multipoint API on DigiAnswer and Philips devices. Enhancements and additions. Two units. Server on iPaq.

Pundik Dmitry & Blekhman Alexandr 2001/02