3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version
|
|
|
- Claribel George
- 9 years ago
- Views:
Transcription
1 Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide
2 J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin [email protected] Carl Timmer [email protected] 11-Nov-2013 Thomas Jefferson National Accelerator Facility Jefferson Ave Newport News, VA Phone Fax
3 Table of Contents 1. Introduction Abstract API Framework Proxy system Framework Java C Static Dynamic Proxy Server
4 INTRODUCTION Section 1 1. Introduction In the following we describe how to customize the cmsg package by adding new domains and subdomains. Users of this guide should be familiar with the basic concepts and strategies of the cmsg package. See the cmsg User s Guide for more information. As noted in the user s guide, the cmsg package can be used at a number of levels: Abstract API to an arbitrary, underlying message system Framework for implementation of underlying messaging systems Proxy system to connect to remote messaging systems Full implementation of publish/subscribe and other messaging systems This guide describes how to work with the first three levels above. The user s guide discusses the fourth level, i.e. how to use the built-in messaging systems provided with the cmsg package Abstract API At the most basic level the cmsg API can simply be implemented as a façade on top of an arbitrary, asynchronous publish/subscribe or synchronous peer-to-peer messaging system. This approach may be useful since user code need not change if the underlying messaging system is changed; however, this will not be discussed further as there is little to say. Look at the diagram below to see a graphical view of how the API is implemented in this fashion. Far more powerful customizations of the cmsg package are described in the next two sections. See the API docs for details of the cmsg API. User Level API: cmsgconnect(udl, ) cmsgconnect Software Library write/get your own 3
5 INTRODUCTION 1.2. Framework A more interesting use of the cmsg package is as a framework for implementation of user-written domains. The cmsg client framework allows new domains to be easily added, dynamically in Java (1.5 or later), and dynamically or statically in C. The framework supports connection of clients to multiple domains, keeps track of separate callbacks and subscriptions, etc. Developers simply have to implement a basic set of messaging functions via an adapter class or interface in Java, or via a set of function pointers in C. See the graphical example below and Section 2 for details. User Level API: cmsgconnect(udl, ) Parse UDL (acts like multiplexor) File connect cmsg connect RC connect Domains mydomain s connect Developer writes library or Java class 1.3. Proxy system The most powerful customization of the cmsg package involves adding new subdomains to the built-in cmsg domain. In the cmsg domain a proxy server (provided) actually implements the messaging system and does all the work. The cmsg domain client code simply transports messages, subscription requests, etc. to the server. This is done in a completely transparent manner so that the client does not know that a remote server is involved. Developers implement the messaging system using a subdomain interface (Java 1.5 or later) which is used by the cmsg domain server to actually do the work. Furthermore, subdomain classes can be loaded dynamically by the server as long as the class files are in the server classpath. The major advantage of using proxy implementations is that the client nodes do not need access to licenses, libraries, etc. that are specific to the underlying messaging system. 4
6 INTRODUCTION These need only be available on the machine where the server runs. For example, access to messaging systems that are not available under VxWorks or on Solaris can be made available to VxWorks or Solaris clients through the proxy server. See the example below and Section 3 for details. My app My protocol cmsg protocol My subdomain client cmsg Name Server subdomains My subdomain CA cmsg CA protocol cmsg protocol cmsg subdomain client N cmsg protocol cmsg protocol IOC CA subdomain client 1 cmsg subdomain client 1 5
7 FRAMEWORK Section 2 2. Framework Let s begin by describing the general way in which both Java and C domains are structured. The cmsg package acts as a multiplexer. The top level user interface simply redirects the API calls to a specific implementation or domain. This is done simply by parsing the UDL in the connect call, determining the domain from the UDL and then passing the calls on to the domain level. The figure below shows graphically what happens to the connect call, but the same applies to all API calls. Client Code connect (UDL, ) Top Level API parse UDL & find domain call the domain specific connect CA Domain connect cmsg Domain connect file Domain connect There are some domains which exist only in Java and those that exist in C, C++, and Java. A domain with versions written in multiple languages must all use the same communication protocol. Another important note for the domain developer is that because clients can be multithreaded, there is the possibility that each function or method may be called simultaneously by different threads. In other words, code which implements a domain must be thread-safe. 6
8 FRAMEWORK 2.1. Java In order to create a new cmsg domain that plugs into the cmsg client framework, developers need to create a class that implements the cmsgdomaininterface interface or (much easier) extends the domain adapter class cmsgdomainadapter. Both of these java files are in the <cmsg dir>/java/org/jlab/coda/cmsg/common directory. The best way to learn how to do this is to view the programmer s guide (the javadocs). The comments in the javadocs give a nice explanation about what each class and method is about. For examples of domains look at the domains listed in the table below. Start by choosing a unique (case insensitive) name for your domain. Already existing names and their associated implementations are in the following table. Domain Name cmsg rc rcm rcs TCPS file CA Class File Name org/jlab/coda/cmsg/cmsgdomain/client/cmsg.java org/jlab/coda/cmsg/rcdomain/runcontrol.java org/jlab/coda/cmsg/rcmulticastdomain/rcmulticast.java org/jlab/coda/cmsg/rcserverdomain/rcserver.java org/jlab/coda/cmsg/tcpsdomain/tcps.java org/jlab/coda/cmsg/filedomain/file.java org/jlab/coda/cmsg/cadomain/ca.java Once you have a unique name, the UDL to access your domain s server will look like: cmsg:<domain name>://<domain specific stuff> In your domain-implementing class, you will have access to strings containing both the full UDL and just the <domain specific stuff>. Parse the UDL and pull out all necessary information. Usually information on how to reach the server is contained in the <domain specific stuff> as well as anything else you find necessary. After the new domain is created, the question remains as to how a cmsg client can access it. The means by which this is achieved can be seen by looking inside the org/jlab/coda/cmsg/cmsg.java file. The domains listed above are provided with the software package and their location is hard coded into that file in the createdomainconnection method. The user is free, of course, to edit cmsg.java to include new domains and then recompile. However, an easier alternative is to give a flag to the JVM when running the client. This flag must be of the form: -D<myDomain>=<myDomain sclassname>, where the specified class must be in your classpath. For example if I have a domain called pow and that is implemented in a java file whose full name (including package) is bam.java and my client code is in a class called crash.java, then I would run my client with a command like: 7
9 FRAMEWORK java Dpow=bam crash Note that domain names are not case sensitive, but dots are not allowed in domain names C Similarly, developers need to provide a library that contains an appropriate set of functions that implement the API in the C language. In this case, new domains may be added either dynamically or statically Static If adding statically, a bit of code editing must be done. In the C code directory there is a file called cmsgprivate.h. This file contains 2 structures that must be filled domainfunctions and domaintypeinfo. To get a good idea of how to do this, see the doxygen html pages. A good example of a functioning domain can be found in cmsgdomain.c which is the C implementation of the cmsg domain. Alternatively, a dummy domain implementation exists in src/libsrc/dummydomain.c and can be used as a template just fill in the functions with your code and change the dummy string with your domain name. This works in conjunction with a dummy client found in src/examples/dummy.c Just follow these steps: 1) Create and fill a structure of type domainfunctions with pointers to all the functions implementing the cmsg API. 2) In the global space, create and fill a structure of type domaintypeinfo in which the first element is a string containing the name of the domain and the second element is the structure with all the function pointers. Make sure the name of this structure is globally unique. 3) Now add this structure to the cmsg.c file declaring it extern. For example, a. extern domaintypeinfo mydomaintypeinfo; 4) Again in cmsg.c, add it to an existing array of domaintypeinfo structures called dtypeinfo. To do this, go to the function registerpermanentdomains and add 2 lines: a. dtypeinfo[n].type = (char *)strdup(mydomaintypeinfo.type); b. dtypeinfo[n].functions = mydomaintypeinfo.functions; 5) where n is the next available integer. 6) Finally, recompile. 8
10 FRAMEWORK Dynamic If adding dynamically, a shared library must be created. In the shared library, certain functions must be present. The following is a list of the necessary functions: /* Prototypes of the 25 functions which implement all the cmsg tasks. */ int cmsg_<domain>_connect(const char *myudl, const char *myname, const char *mydescription, const char *UDLremainder, void **domainid); int cmsg_<domain>_reconnect(void *domainid); int cmsg_<domain>_send(void *domainid, void *msg); int cmsg_<domain>_syncsend(void *domainid, void *msg, int *response); int cmsg_<domain>_flush(void *domainid); int cmsg_<domain>_subscribe(void *domainid, const char *subject, const char *type, cmsgcallbackfunc *callback, void *userarg, cmsgsubscribeconfig *config, void **handle); int cmsg_<domain>_unsubscribe(void *domainid, void *handle); int cmsg_<domain>_subscriptionpause (void *domainid, void *handle); int cmsg_<domain>_subscriptionresume(void *domainid, void *handle); int cmsg_<domain>_subscriptionqueueclear(void *domainid, void *handle); int cmsg_<domain>_subscriptionqueuecount(void *domainid, void *handle, int *count); int cmsg_<domain>_subscriptionqueueisfull(void *domainid, void *handle, int *full); int cmsg_<domain>_subscriptionmessagestotal(void *domainid, void *handle, int *total); int cmsg_<domain>_subscribeandget(void *domainid, const char *subject, const char *type, const struct timespec *timeout, void **replymsg); int cmsg_<domain>_sendandget(void *domainid, void *sendmsg, const struct timespec *timeout, void **replymsg); int cmsg_<domain>_monitor(void *domainid, const char *command, void **replymsg); int cmsg_<domain>_start(void *domainid); int cmsg_<domain>_stop(void *domainid); int cmsg_<domain>_disconnect(void *domainid); int cmsg_<domain>_shutdownclients(void *domainid, const char *client, int flag); int cmsg_<domain>_shutdownservers(void *domainid, const char *server, int flag); int cmsg_<domain>_setshutdownhandler(void *domainid, cmsgshutdownhandler *handler, void *userarg); int cmsg_<domain>_isconnected(void *domainid, int *connected); int cmsg_<domain>_setudl(void *domainid, const char *udl, const char *remainder); int cmsg_<domain>_getcurrentudl(void *domainid, char **udl); where <domain> is the domain name in all lowercase letters. Files containing these functions must be compiled into a shared library with the specific name libcmsg<domain>.so where domain is the domain name in all lowercase letters. In this way, a cmsg application will parse a given UDL, find the domain, and know which library to dynamically load. If the library is in the LD_LIBRARY_PATH environmental variable, then everything should be fine. To reiterate, just follow these steps: 1) Create a file or files of the above listed functions. 2) Compile everything into a shared library with the name libcmsg<domain>.so, domain being all lowercase. 3) When compiling your cmsg application that uses this domain, link it with this shared library as well as against libcmsg.so and libcmsgregex.so. 9
11 FRAMEWORK 4) Run your application. An example is provided in 2 files: dummydomain.c and dummy.c. As the name indicates, the dummydomain.c file implements an example domain which does nothing except print something out each time a function is called. The file dummy.c implements an application which uses the dummy domain. Using these 2 files as a template should make domain development quite simple. 10
12 DOMAINS AND UNIVERSAL DOMAIN LOCATORS Section 3 3. Proxy Server The cmsg domain is implemented with a server. All client API calls are directed to this server which carries out the desired actions. Because of the way this server is structured, it is also possible to use it as a proxy server. The part of the server which receives, deciphers, and queues up requests is distinct from the part which carries out the requests. In fact, for a single client, all requests are carried out by a single object which implements a specific interface the cmsgsubdomaininterface. In actual practice it is easier to subclass cmsgsubdomainadapter which already implements some minimum functionality in which default methods return Not Implemented for all messaging functions. Instead of listing and describing all methods of the interface, it s easier to read the javadoc where such is already done for a complete description of the interface. The object that handles this real functionality we call a subdomain handler with the idea that different classes that implement this interface can handle the messages in their own way (their own subdomain). Creating a new cmsg subdomain is the most powerful way of customizing cmsg. Messages published to the cmsg domain are transparently transferred from the client to the server, then passed on to an instance of a subdomain class for transport and delivery. The diagram below is a graphical representation of what goes on. There are 2 clients in yellow client A and client B. The cmsg domain server is the large oval in purple which contains 1 section for receiving requests and 3 different subdomains. Each subdomain is created when a client connects to the cmsg domain server and that specific subdomain. Thus both clients have already connected to cmsg domain & subdomain X. Client B has subscribed to messages of a certain subject which is shown by green arrows and is ultimately taken care of by the handlesubscribe method of the subdomain. Client A has sent messages with that same subject and is shown with blue arrows and is ultimately taken care of by the handlesend method. Finally, client B received those messages from the subdomain handler in a callback. 11
13 DOMAINS AND UNIVERSAL DOMAIN LOCATORS Client A Code connect (cmsg domain/subdomain X, ) send(subject, message, ) Request receiving, deciphering, queuing CA subdomain cmsg subdomain X subdomain handlesubscribe(subject) handlesend(subject, message) cmsg Domain Server Client B Code connect (cmsg domain/subdomain X,.) subscribe(subject, callback, ) callback The developer needs to be aware of one very pertinent fact. Clients may connect to the name server in a manner in which there will be several threads processing a single client s requests on the domain server s request queue. Thus, all methods in the subdomain handler object must be thread-safe. It is also possible that more than one client of a particular subdomain may be simultaneously connected, thus the subdomain handler class must be careful in handling class static data i.e. it must be thread-safe. There are several subdomains already existing that will serve as templates for any developer. There are subdomains for talking to Channel Access (CA), a database (DB), smart sockets (SmartSockets), queuing messages in a database (Queue), queuing messages in files (FileQueue), and logging messages to a file (LogFile). There is also a dummy subdomain (Dummy) that provides a template. 12
14 NETWORKS Section 4 4. Networks 4.1. Run Control Communication Run control communication is a tricky business. Part of the difficulty is getting things to work by means of the cmsg interface, which is not a natural way to implement them. There are 3 run control domains which all work together: 1. rc domain 2. rc multicast domain 3. rc server domain The rc domain is available in both C and Java in order to implement the rc client, while the 2 server domains (rc multicast and rc server) are only available in Java RC Domain When an rc client (rc domain) is created, the UDL given to the cmsg object is of the form: rc://<host>:<port>/<expid>?multicastto=<timeout1>&connectto=<timeout2> where <host> is required and may be multicast, localhost, or an ip address in dotteddecimal form. If the UDL has <host> = multicast, multicast packets are sent to the address. The TCP port that the rc client is listening on is given by <port> and defaults to if not given. The value of <expid> is required and is NOT taken from an environmental variable. The 2 timeouts are optional. The first is the time in seconds to wait for the rc multicast server to respond and defaults to no timeout. The second is the time in seconds to wait, after the multicast server responds, until the rc server establishes a TCP connection to the client. It defaults to 5 seconds (with 0 meaning no timeout). Client UDP packets are sent over all network interfaces that are up, support multicasting, and are not the loopback. These packets are staggered by ½ second to prevent the rc multicast server from being bombarded on all interfaces at once. The rc client sends a list of its local ip addresses as strings in dotted-decimal form (address associated with the canonical name first) along with its name, expid, and TCP 13
15 NETWORKS port to the rc multicast server. It only sends unique, IPv4, non-loopback addresses from network interfaces which are up. Below is a simplified diagram of the connection process: Server Host 4 In code, make UDL for rc server with rc client TCP port & IP address list: rcs://ip1:port; ; rcs://ipn:port RC Multicast Server rcm://port/expid RC Server Order IP lists so common subnets are tried first 3 Send stop sending 1 Look for other multicast servers with same port & expid. 5 Make TCP connection, sending server s IP address list (dotted-decimal) 6 Make TCP connection back to server & complete client connect() RC Client rc://multicast:port/expid 2 Send name, expid, TCP port, IP address list (dotted-decimal) RC Client s connect() RC Multicast Domain Creating an rc multicast server (rcm domain) to receive the output of the rc client is done by specifying a UDL in the form: rcm://<udpport>/<expid>?multicastto=<timeout> 14
16 NETWORKS The <udpport> is the value of the UPD listening port which defaults to if not specified. The <expid> is required, and an optional timeout in seconds can be specified used when searching for other rcm servers with the same port and expid. The first thing an rc multicast server does is multicast trying to locate another rc multicast server using the same port and expid. If one is found, an exception is thrown and no server started. The rc multicast server receives a list ip addresses from the rc client and if the client s expid matches it own, places them into a cmsg message payload as a String array labeled IpAddresses. This message also contains the rc client s TCP port and name. It is passed to all callbacks of the rc multicast server (at least one callback must be created in order to handle valid client connections) RC Server Domain These ip addresses are used in the callback or elsewhere to create an rc server object (rcs domain). The full UDL passed to the constructor of that cmsg object may be a semicolon-separated list of any number of smaller UDLs: rcs://ipaddr1:port;rcs//ipaddr2:port; rcs://ipaddrn:port where ipaddr is a dotted-decimal format ip address of the rc client and port is the TCP port the rc client is listening on. By using a list of UDLs as the full UDL itself, all rc client ip addresses can be passed to the rc server object. When parsing the full UDL, that server will extract all ip addresses and the port and find (if possible) an address on the same subnet as the server and use that as the first address in a list of rc server addresses to send to the rc client in the completion of the rc client s connect method. There should be only 1 port value used. The first port encountered in a UDL will be used as the TCP port that the rc client is listening on to receive messages from the rc server. To complete the connect() call that the rc client makes, the rc server will send a cmsg message to it with its TCP port and a list of all its ip addresses (with the one on the same subnet first) in a payload of String array type labeled IpAddresses. The rc client will establish a TCP connection with the rc server, trying each address in turn until a successful connection is made. Currently UDP communication is not used between rc client and server. The way in which the rc server determines whether a client ip address is on the same subnet as one of its own ip addresses is in the following method. Each local ip address as 15
17 NETWORKS an array of 4, 1-byte ints and its accompanying subnet mask (a short integer) is turned into a network or subnet address. This is done by turning the 4 bytes into a 32 bit integer and anding it with the mask. The resulting 32 bit int is converted back into an array of 4, 1-byte ints which is then converted to a dotted-decimal string. This same process is done to each member of the list of client addresses. A string comparison is done and if the strings are identical, it indicates the server & client addresses are on the same subnet. The matches are placed first in a list. All non-matches are placed at the end of the list. There are 2 lists that the rc server keeps. One is a list of server ip addresses to send to the client. The other is the list of client ip addresses. The latter is used to finish the original rc client connection call using the common network addresses first. The former is sent to the rc client again with the common network addresses first. In the rc client s last part of its connect() method or routine, it creates a TCP connection to the rc server using the list of ip addresses sent to it in a cmsg message payload named IpAddresses. This socket handles all subsequent communication between the two. 16
Building a Multi-Threaded Web Server
Building a Multi-Threaded Web Server In this lab we will develop a Web server in two steps. In the end, you will have built a multi-threaded Web server that is capable of processing multiple simultaneous
SMTP-32 Library. Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows. Version 5.2
SMTP-32 Library Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows Version 5.2 Copyright 1994-2003 by Distinct Corporation All rights reserved Table of Contents 1 Overview... 5 1.1
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Network Programming. Writing network and internet applications.
Network Programming Writing network and internet applications. Overview > Network programming basics > Sockets > The TCP Server Framework > The Reactor Framework > High Level Protocols: HTTP, FTP and E-Mail
StreamServe Persuasion SP4 Service Broker
StreamServe Persuasion SP4 Service Broker User Guide Rev A StreamServe Persuasion SP4 Service Broker User Guide Rev A 2001-2009 STREAMSERVE, INC. ALL RIGHTS RESERVED United States patent #7,127,520 No
IP Addressing. IP Addresses. Introductory material.
IP Addressing Introductory material. An entire module devoted to IP addresses. IP Addresses Structure of an IP address Classful IP addresses Limitations and problems with classful IP addresses Subnetting
IP Addressing Introductory material.
IP Addressing Introductory material. A module devoted to IP addresses. Addresses & Names Hardware (Layer 2) Lowest level Ethernet (MAC), Serial point-to-point,.. Network (Layer 3) IP IPX, SNA, others Transport
UNIX Sockets. COS 461 Precept 1
UNIX Sockets COS 461 Precept 1 Clients and Servers Client program Running on end host Requests service E.g., Web browser Server program Running on end host Provides service E.g., Web server GET /index.html
Chapter 3. Internet Applications and Network Programming
Chapter 3 Internet Applications and Network Programming 1 Introduction The Internet offers users a rich diversity of services none of the services is part of the underlying communication infrastructure
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
Disfer. Sink - Sensor Connectivity and Sensor Android Application. Protocol implementation: Charilaos Stais (stais AT aueb.gr)
Disfer Sink - Sensor Connectivity and Sensor Android Application Protocol implementation: Charilaos Stais (stais AT aueb.gr) Android development: Dimitri Balerinas (dimi.balerinas AT gmail.com) Supervised
IP Network Layer. Datagram ID FLAG Fragment Offset. IP Datagrams. IP Addresses. IP Addresses. CSCE 515: Computer Network Programming TCP/IP
CSCE 515: Computer Network Programming TCP/IP IP Network Layer Wenyuan Xu Department of Computer Science and Engineering University of South Carolina IP Datagrams IP is the network layer packet delivery
Socket Programming in C/C++
September 24, 2004 Contact Info Mani Radhakrishnan Office 4224 SEL email mradhakr @ cs. uic. edu Office Hours Tuesday 1-4 PM Introduction Sockets are a protocol independent method of creating a connection
Chapter 2: Remote Procedure Call (RPC)
Chapter 2: Remote Procedure Call (RPC) Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) [email protected] http://www.iks.inf.ethz.ch/ Contents - Chapter 2 - RPC
µtasker Document FTP Client
Embedding it better... µtasker Document FTP Client utaskerftp_client.doc/1.01 Copyright 2012 M.J.Butcher Consulting Table of Contents 1. Introduction...3 2. FTP Log-In...4 3. FTP Operation Modes...4 4.
Special Note Ethernet Connection Problems and Handling Methods (CS203 / CS468 / CS469)
Special Note Connection Problems and Handling Methods (CS203 / CS468 / CS469) Sometimes user cannot find the RFID device after installing the CSL Demo App and the RFID reader is connected. If user cannot
Manual. Programmer's Guide for Java API
2013-02-01 1 (15) Programmer's Guide for Java API Description This document describes how to develop Content Gateway services with Java API. TS1209243890 1.0 Company information TeliaSonera Finland Oyj
Packet Sniffing and Spoofing Lab
SEED Labs Packet Sniffing and Spoofing Lab 1 Packet Sniffing and Spoofing Lab Copyright c 2014 Wenliang Du, Syracuse University. The development of this document is/was funded by the following grants from
Network Load Balancing
Network Load Balancing Step by Step installation of Network Load Balancing in Windows Server 2008 R2. Prerequisite for NLB Cluster 1. Log on to NODE1 Windows Server 2008 R2 system with a domain account
Creating a Simple, Multithreaded Chat System with Java
Creating a Simple, Multithreaded Chat System with Java Introduction by George Crawford III In this edition of Objective Viewpoint, you will learn how to develop a simple chat system. The program will demonstrate
Socket Programming. Srinidhi Varadarajan
Socket Programming Srinidhi Varadarajan Client-server paradigm Client: initiates contact with server ( speaks first ) typically requests service from server, for Web, client is implemented in browser;
ireasoning SNMP API User Guide
ireasoning SNMP API User Guide Copyright 2002-2010 ireasoning Inc., All Rights Reserved. The information contained herein is the property of ireasoning Inc. This document may not be copied, reproduced,
Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner
1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
TUTORIAL FOR INITIALIZING BLUETOOTH COMMUNICATION BETWEEN ANDROID AND ARDUINO
TUTORIAL FOR INITIALIZING BLUETOOTH COMMUNICATION BETWEEN ANDROID AND ARDUINO some pre requirements by :-Lohit Jain *First of all download arduino software from www.arduino.cc *download software serial
CA Data Protection. Content Provider Development Guide. Release 15.0
CA Data Protection Content Provider Development Guide Release 15.0 This Documentation, which includes embedded help systems and electronically distributed materials (hereinafter referred to as the Documentation
Ethernet. Ethernet. Network Devices
Ethernet Babak Kia Adjunct Professor Boston University College of Engineering ENG SC757 - Advanced Microprocessor Design Ethernet Ethernet is a term used to refer to a diverse set of frame based networking
Learning Outcomes. Networking. Sockets. TCP/IP Networks. Hostnames and DNS TCP/IP
CP4044 Lecture 7 1 Networking Learning Outcomes To understand basic network terminology To be able to communicate using Telnet To be aware of some common network services To be able to implement client
Computer Networks Practicum 2015
Computer Networks Practicum 2015 Vrije Universiteit Amsterdam, The Netherlands http://acropolis.cs.vu.nl/ spyros/cnp/ 1 Overview This practicum consists of two parts. The first is to build a TCP implementation
Virtuozzo Virtualization SDK
Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200
Limi Kalita / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 5 (3), 2014, 4802-4807. Socket Programming
Socket Programming Limi Kalita M.Tech Student, Department of Computer Science and Engineering, Assam Down Town University, Guwahati, India. Abstract: The aim of the paper is to introduce sockets, its deployment
SSC - Communication and Networking Java Socket Programming (II)
SSC - Communication and Networking Java Socket Programming (II) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics Multicast in Java User Datagram
Design Notes for an Efficient Password-Authenticated Key Exchange Implementation Using Human-Memorable Passwords
Design Notes for an Efficient Password-Authenticated Key Exchange Implementation Using Human-Memorable Passwords Author: Paul Seymer CMSC498a Contents 1 Background... 2 1.1 HTTP 1.0/1.1... 2 1.2 Password
How To Create An Easybelle History Database On A Microsoft Powerbook 2.5.2 (Windows)
Introduction EASYLABEL 6 has several new features for saving the history of label formats. This history can include information about when label formats were edited and printed. In order to save this history,
TREK GETTING STARTED GUIDE
TREK GETTING STARTED GUIDE September 2014 Approved for Public Release; Distribution is Unlimited. TABLE OF CONTENTS PARAGRAPH PAGE 1 Welcome... 2 1.1 About TReK... 2 1.2 About this Guide... 2 1.3 Important
Guideline for setting up a functional VPN
Guideline for setting up a functional VPN Why do I want a VPN? VPN by definition creates a private, trusted network across an untrusted medium. It allows you to connect offices and people from around the
Java Secure Application Manager
Java Secure Application Manager How-to Introduction:...1 Overview:...1 Operation:...1 Example configuration:...2 JSAM Standard application support:...6 a) Citrix Web Interface for MetaFrame (NFuse Classic)...6
Chapter 1 - Web Server Management and Cluster Topology
Objectives At the end of this chapter, participants will be able to understand: Web server management options provided by Network Deployment Clustered Application Servers Cluster creation and management
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service Achieving Scalability and High Availability Abstract DB2 Connect Enterprise Edition for Windows NT provides fast and robust connectivity
Green Telnet. Making the Client/Server Model Green
Green Telnet Reducing energy consumption is of growing importance. Jeremy and Ken create a "green telnet" that lets clients transition to a low-power, sleep state. By Jeremy Blackburn and Ken Christensen,
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
Lab 10.4.1 IP Addressing Overview
Lab 10.4.1 IP ing Overview Estimated time: 30 min. Objectives: Background: This lab will focus on your ability to accomplish the following tasks: Name the five different classes of IP addresses Describe
Getting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
SimWebLink.NET Remote Control and Monitoring in the Simulink
SimWebLink.NET Remote Control and Monitoring in the Simulink MARTIN SYSEL, MICHAL VACLAVSKY Department of Computer and Communication Systems Faculty of Applied Informatics Tomas Bata University in Zlín
Migrating to vcloud Automation Center 6.1
Migrating to vcloud Automation Center 6.1 vcloud Automation Center 6.1 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a
HP Device Manager 4.6
Technical white paper HP Device Manager 4.6 Installation and Update Guide Table of contents Overview... 3 HPDM Server preparation... 3 FTP server configuration... 3 Windows Firewall settings... 3 Firewall
Using RADIUS Agent for Transparent User Identification
Using RADIUS Agent for Transparent User Identification Using RADIUS Agent Web Security Solutions Version 7.7, 7.8 Websense RADIUS Agent works together with the RADIUS server and RADIUS clients in your
Configuring the BIG-IP and Check Point VPN-1 /FireWall-1
Configuring the BIG-IP and Check Point VPN-1 /FireWall-1 Introducing the BIG-IP and Check Point VPN-1/FireWall-1 LB, HALB, VPN, and ELA configurations Configuring the BIG-IP and Check Point FireWall-1
The POSIX Socket API
The POSIX Giovanni Agosta Piattaforme Software per la Rete Modulo 2 G. Agosta The POSIX Outline Sockets & TCP Connections 1 Sockets & TCP Connections 2 3 4 G. Agosta The POSIX TCP Connections Preliminaries
2057-15. First Workshop on Open Source and Internet Technology for Scientific Environment: with case studies from Environmental Monitoring
2057-15 First Workshop on Open Source and Internet Technology for Scientific Environment: with case studies from Environmental Monitoring 7-25 September 2009 TCP/IP Networking Abhaya S. Induruwa Department
PROFESSIONAL. Node.js BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE. Pedro Teixeira WILEY. John Wiley & Sons, Inc.
PROFESSIONAL Node.js BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE Pedro Teixeira WILEY John Wiley & Sons, Inc. INTRODUCTION xxvii CHAPTER 1: INSTALLING NODE 3 Installing Node on Windows 4 Installing on
Lab 5: BitTorrent Client Implementation
Lab 5: BitTorrent Client Implementation Due: Nov. 30th at 11:59 PM Milestone: Nov. 19th during Lab Overview In this lab, you and your lab parterner will develop a basic BitTorrent client that can, at minimal,
Transparent Redirection of Network Sockets 1
Transparent Redirection of Network Sockets 1 Timothy S. Mitrovich, Kenneth M. Ford, and Niranjan Suri Institute for Human & Machine Cognition University of West Florida {tmitrovi,kford,nsuri}@ai.uwf.edu
FTP Client Engine Library for Visual dbase. Programmer's Manual
FTP Client Engine Library for Visual dbase Programmer's Manual (FCE4DB) Version 3.3 May 6, 2014 This software is provided as-is. There are no warranties, expressed or implied. MarshallSoft Computing, Inc.
lubyk lua libraries for live arts Gaspard Bucher (Buma)! artist, musician, coder
lubyk lua libraries for live arts Gaspard Bucher (Buma)! artist, musician, coder lubyk is not a framework Why lubyk? Reuse code from project to project Accelerate development (live coding) Simple APIs
The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications
The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications Joshua Ellul [email protected] Overview Brief introduction to Body Sensor Networks BSN Hardware
Lecture 5: Java Fundamentals III
Lecture 5: Java Fundamentals III School of Science and Technology The University of New England Trimester 2 2015 Lecture 5: Java Fundamentals III - Operators Reading: Finish reading Chapter 2 of the 2nd
Kepware Technologies Optimizing KEPServerEX V5 Projects
Kepware Technologies Optimizing KEPServerEX V5 Projects September, 2010 Ref. 50.16 Kepware Technologies Table of Contents 1. Overview... 1 2. Factors that Affect Communication Speed... 1 2.1 Defining Bandwidth...
Lab 4: Socket Programming: netcat part
Lab 4: Socket Programming: netcat part Overview The goal of this lab is to familiarize yourself with application level programming with sockets, specifically stream or TCP sockets, by implementing a client/server
IP Address Classes (Some are Obsolete) 15-441 Computer Networking. Important Concepts. Subnetting 15-441 15-641. Lecture 8 IP Addressing & Packets
Address Classes (Some are Obsolete) 15-441 15-441 Computer Networking 15-641 Class A 0 Network ID Network ID 8 16 Host ID Host ID 24 32 Lecture 8 Addressing & Packets Peter Steenkiste Fall 2013 www.cs.cmu.edu/~prs/15-441-f13
Understanding Slow Start
Chapter 1 Load Balancing 57 Understanding Slow Start When you configure a NetScaler to use a metric-based LB method such as Least Connections, Least Response Time, Least Bandwidth, Least Packets, or Custom
Generalised Socket Addresses for Unix Squeak 3.9 11
Generalised Socket Addresses for Unix Squeak 3.9 11 Ian Piumarta 2007 06 08 This document describes several new SocketPlugin primitives that allow IPv6 (and arbitrary future other) address formats to be
RTI Monitoring Library Getting Started Guide
RTI Monitoring Library Getting Started Guide Version 5.1.0 2011-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations,
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
ELEN 602: Computer Communications and Networking. Socket Programming Basics
1 ELEN 602: Computer Communications and Networking Socket Programming Basics A. Introduction In the classic client-server model, the client sends out requests to the server, and the server does some processing
Operating Systems Design 16. Networking: Sockets
Operating Systems Design 16. Networking: Sockets Paul Krzyzanowski [email protected] 1 Sockets IP lets us send data between machines TCP & UDP are transport layer protocols Contain port number to identify
PktFilter A Win32 service to control the IPv4 filtering driver of Windows 2000/XP/Server 2003 http://sourceforge.net/projects/pktfilter/
PktFilter A Win32 service to control the IPv4 filtering driver of Windows 2000/XP/Server 2003 http://sourceforge.net/projects/pktfilter/ Jean-Baptiste Marchand [email protected] Contents 1
Apache Thrift and Ruby
Apache Thrift and Ruby By Randy Abernethy In this article, excerpted from The Programmer s Guide to Apache Thrift, we will install Apache Thrift support for Ruby and build a simple Ruby RPC client and
Release Notes LS Retail Data Director 3.01.04 August 2011
Release Notes LS Retail Data Director 3.01.04 August 2011 Copyright 2010-2011, LS Retail. All rights reserved. All trademarks belong to their respective holders. Contents 1 Introduction... 1 1.1 What s
Real-time Device Monitoring Using AWS
Real-time Device Monitoring Using AWS 1 Document History Version Date Initials Change Description 1.0 3/13/08 JZW Initial entry 1.1 3/14/08 JZW Continue initial input 1.2 3/14/08 JZW Added headers and
Application Architecture
A Course on Internetworking & Network-based Applications CS 6/75995 Internet-based Applications & Systems Design Kent State University Dept. of Science LECT-2 LECT-02, S-1 2 Application Architecture Today
Firewall Implementation
CS425: Computer Networks Firewall Implementation Ankit Kumar Y8088 Akshay Mittal Y8056 Ashish Gupta Y8410 Sayandeep Ghosh Y8465 October 31, 2010 under the guidance of Prof. Dheeraj Sanghi Department of
Cluster APIs. Cluster APIs
Cluster APIs Cluster APIs Cluster APIs include: Cluster Control APIs Cluster Resource Group APIs Cluster Resource Group Exit Program Topics covered here are: Cluster APIs Cluster Resource Services Characteristics
TELE 301 Network Management. Lecture 17: File Transfer & Web Caching
TELE 301 Network Management Lecture 17: File Transfer & Web Caching Haibo Zhang Computer Science, University of Otago TELE301 Lecture 17: File Transfer & Web Caching 1 Today s Focus FTP & Web Caching!
TREK GETTING STARTED GUIDE
TREK GETTING STARTED GUIDE February 2015 Approved for Public Release; Distribution is Unlimited. TABLE OF CONTENTS PARAGRAPH PAGE 1 Welcome... 2 1.1 About TReK... 2 1.2 About this Guide... 2 1.3 Important
TCP/IP Networking, Part 2: Web-Based Control
TCP/IP Networking, Part 2: Web-Based Control Microchip TCP/IP Stack HTTP2 Module 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 1 Welcome to the next
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
TCP/IP Basis. OSI Model
TCP/IP Basis 高 雄 大 學 資 訊 工 程 學 系 嚴 力 行 Source OSI Model Destination Application Presentation Session Transport Network Data-Link Physical ENCAPSULATION DATA SEGMENT PACKET FRAME BITS 0101010101010101010
Porting applications & DNS issues. socket interface extensions for IPv6. Eva M. Castro. [email protected]. dit. Porting applications & DNS issues UPM
socket interface extensions for IPv6 Eva M. Castro [email protected] Contents * Introduction * Porting IPv4 applications to IPv6, using socket interface extensions to IPv6. Data structures Conversion functions
Terminal Server Configuration and Reference Errata
Doc. No. 78-0944-06A0 June 14, 1993 Terminal Server Configuration and Reference Errata This document supplies corrections and additional informaiton for the 9.0 version of the Cisco publication Terminal
6.1. Example: A Tip Calculator 6-1
Chapter 6. Transition to Java Not all programming languages are created equal. Each is designed by its creator to achieve a particular purpose, which can range from highly focused languages designed for
Resource Utilization of Middleware Components in Embedded Systems
Resource Utilization of Middleware Components in Embedded Systems 3 Introduction System memory, CPU, and network resources are critical to the operation and performance of any software system. These system
HA Proxy DNS Configuration Mode Commands
Important HA Proxy DNS Intercept is a license-enabled feature. The HA Proxy DNS Configuration Mode is used to create rules for Home Agent (HA) proxy DNS intercept lists that redirect packets with unknown
COM 440 Distributed Systems Project List Summary
COM 440 Distributed Systems Project List Summary This list represents a fairly close approximation of the projects that we will be working on. However, these projects are subject to change as the course
In: Proceedings of RECPAD 2002-12th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal
Paper Title: Generic Framework for Video Analysis Authors: Luís Filipe Tavares INESC Porto [email protected] Luís Teixeira INESC Porto, Universidade Católica Portuguesa [email protected] Luís Corte-Real
Transparent Redirection of Network Sockets 1
Transparent Redirection of Network Sockets Timothy S. Mitrovich, Kenneth M. Ford, and Niranjan Suri Institute for Human & Machine Cognition University of West Florida {tmitrovi,kford,[email protected].
Dissertation Title: SOCKS5-based Firewall Support For UDP-based Application. Author: Fung, King Pong
Dissertation Title: SOCKS5-based Firewall Support For UDP-based Application Author: Fung, King Pong MSc in Information Technology The Hong Kong Polytechnic University June 1999 i Abstract Abstract of dissertation
Tutorial on Socket Programming
Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Seyed Hossein Mortazavi (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian, ) 1 Outline Client- server
Mail User Agent Project
Mail User Agent Project Tom Kelliher, CS 325 100 points, due May 4, 2011 Introduction (From Kurose & Ross, 4th ed.) In this project you will implement a mail user agent (MUA) that sends mail to other users.
Configuring SSL Termination
CHAPTER 4 This chapter describes the steps required to configure a CSS as a virtual SSL server for SSL termination. It contains the following major sections: Overview of SSL Termination Creating an SSL
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
Question1-part2 What undesirable consequences might there be in having too long a DNS cache entry lifetime?
CSCI 312 - DATA COMMUNICATIONS AND NETWORKS FALL, 2014 Assignment 4 Working as a group. Working in small gruops of 2-4 students. When you work as a group, you have to return only one home assignment per
flashserver External for Max/MSP
flashserver External for Max/MSP Version 1.1 Written by Olaf Matthes. Copyright 2002-2006 Olaf Matthes All rights reserved. Content Overview 3 Thanks 3 The flashserver External 4 Creating the Object 4
http://jade.tilab.com/
http://jade.tilab.com/ JADE A framework for developing multi-agent systems FIPA-compliant Written in JAVA, consists of an API with several packages Agent platform: 2 AMS and DF Agent Management System
Improving DNS performance using Stateless TCP in FreeBSD 9
Improving DNS performance using Stateless TCP in FreeBSD 9 David Hayes, Mattia Rossi, Grenville Armitage Centre for Advanced Internet Architectures, Technical Report 101022A Swinburne University of Technology
ReadyNAS Remote Troubleshooting Guide NETGEAR
ReadyNAS Remote Troubleshooting Guide NETGEAR June 2010 Symptom: I cannot see any shares from my PC This symptom can be caused by a variety of reasons. To diagnose the problem, please make sure your are
Socket Programming. Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur
Socket Programming Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur Background Demultiplexing Convert host-to-host packet delivery service into a process-to-process communication channel
