• Short Name NP
  • Course code CACS355
  • Semester Sixth Semester
  • Full Marks 60 + 20 + 20
  • Pass Marks 24 + 8 + 8
  • Credit Hrs 3
  • Elective/Compulsary Compulsary

Network Programming

Chapter wise complete Notes.

Course Description

Course Description 

This course is designed to extend students' knowledge and practice in analysis and design of computer networks by focusing on computer network programming. It includes introduction, Internet Address, URLs and URis, HTTP, URLConnections, Socket Programming, IP Multicast and RMI. The JAVA programming language will be used throughout the course. It does not entirely focus on theoretical concept but also strongly focuses on practical skill based knowledge.

Course objectives 

The general objectives of this course are to provide theoretical as well as practical knowledge of network programming to make students capable of developing, implementing, managing and troubleshooting the issues of network programming in their personal as well professional life.

Unit Contents

1. Introduction  : 3 hrs

1.1 Network Programing Features and Scope

1.2 Network Programming Language, Tools & Platforms

1.3 Client and Server Applications

1.4 Client server model and software design

2. Internet Addresses  : 2 hrs

2.1 The InetAddress Class: Creating New InetAddress Objects, Getter 

2.2 Methods, Address Types, Testing Reachability and Object Methods 

2.3 Inet4Address and lnet6Address

2.4 The Network Interface Class: Factory Method & Getter Method

2.5 Some Useful Programs: SpamCheck, Processing Web Server Logfiles

3. URLs and URIs  : 5 hrs

3.1 URIs: URLs and Relative URLs

3.2 The URL Class: Creating New URLs, Retrieving Data From a URL, Splitting a URL into Pieces, Equality & Comparison and Conversion 

3.3 The URI Class: Constructing a URI, The Parts of the URI, Resolving Relative URIs, Equality & Comparison and String Representation 

3.4 x-www-form-urlencoded: URL Encoder and URL Decoder

3.5 Proxies: System Properties, The ProxyClass and The ProxySelector Class

3.6 Communicating with Server-Side Programs Through GET

3.7 Accessing Password-Protected Sites: The Authenticator Class, The PasswordAuthentication Class and The JPasswordField Class

4. HTTP : 2 hrs

4.1 The protocol: Keep-Alive 

4.2 HTTP Methods

4.3 The Request Body

4.4 Cookies: CookieManager and CookiesStore

5. URL Connections  : 5 hrs

5.1 Openning URLConnections

5.2 Reading Data from Server

5.3 Reading Header: Retrieving specific Header Fields and Retrieving Arbitrary Header Fields

5.4 Cache: Web Cache for Java

5.5 Configuring the Connection: protected URL url, protected boolean connected, protected boolean allowUserInteraction, protected boolean dolnput, protected boolean doOutput, protected boolean ifModificationSince, protected boolean useCaches and Timeouts

5.6 Configuring the Client Request HTTP Header

5.7 Security Considerations for URLConnections

5.8 Guessing MIME Media Types

5.9 HttpURLConnection: The Request Methods, Disconnecting from the Server, Handling Server Responses, Proxies and Streaming Mode

6. Socket for Clients  : 5 hrs

6.1 Introduction to Socket

6.2 Using Sockets: Investigating Protocols with telnet, Reading from Servers with Sockets, Writing to Servers with Sockets

6.3 Constructing and connecting Sockets: Basic Constructors, Picking a Local Interface to Connect From, Constructing Without Connecting, Socket Addresses and Proxy Servers

6.4 Getting Information about a Socket: Closed or Connected?, toString() 

6.5 Setting Socket Options: TCP_NODELAY, SO_LINGER,SO_TIMEOUT, SO_RCVBUF and SO_SNDBUF, SO_ KEEPALIVE, OOBINLINE, SO_REUSEADDER and IP_TOS Class of Services

6.6 Socket in GUI Applications: Who is and A Network Client Library

7. Socket for Servers  : 5 hrs

7.1 Using Server Sockets: Serving Binary Data, Multithreaded Servers, Writing to Servers with Sockets and Closing Server Sockets

7.2 Logging: What to Log and How to Log

7.3 Constructing Server Sockets: Constructing Without Binding 

7.4 Getting Information about Server Socket

7.5 Socket Options: SO_TIMEOUT, SO_RSUMEADDR, SO_RCVBUF  and Class of Service

7.6 HTTP Servers: A Single File Server, A Redirector and A Full-Fledged HTTP Server

8. Secure Socket  : 4 hrs

8.1 Secure Communication

8.2 Creating Secure Client Sockets 

8.3 Event Handlers

8.4 Session Management

8.5 Client Mode

8.6 Creating Secure Server Socket

8.7 Configure SSL Server Sockets: Choosing the Cipher Suits, Session Management and Client Mode

9. Nonblocking I/O  : 3 hrs

9.1 An Example Client and Server

9.2 Buffers: Creating Buffers, Filling and Draining, Bulk Methods, Data Conversion, View Buffers, Compacting Buffers, Duplicating Buffers, Slicing Buffers, Marking and Resetting, Object Methods

9.3 Channels: Socket Channel, Server Socket Channel, The Channels Class, Asynchronous Channels, Socket Options

9.4 Readiness Selection: The Selector Class, The Selection Key Class

10. UDP  : 5 hrs

10.1 UDP Protocol

10.2 UDP Clients

10.3 UDP Servers

10.4 The Datagram Packet Class: The Constructor, The get Methods, The setter Methods

10.5 The Datagram Socket Class: The Constructor, Sending and Receiving Datagrams, Managing Connections

10.6 Socket Options: SO_TIMEOUT, SORCVBUF, SO_SNDBUF, SO_ RSUMEADDR, SO_BROADCAST and IP_TOS

10.7 UDP Applications: Simple UDP Clients, UDP Server and A UDP Echo Client

10.8 Datagram Channel: Using Datagram Channel

11. IP Multicast  : 2 hrs

11.1 Multicasting: Multicast Address and Groups, Clients and Servers, Routers and Routing

11.2 Working with Multicast Sockets: The Constructor, Communicating  with a Group

12. Remote Method Invocation  : 2 hrs

12.1 Defining and Implementing RMI Service Interface 

12.2 Creating an RMI Server and Client

12.3 Running the RM1 System

Laboratory Work

Laboratory work should be done covering all the topics listed above and a small project work should be carried out using the concept learnt in this course using Java programming Language.

Teaching Methods

The teaching faculties are expected to create environment where students can update and upgrade themselves with the current scenario of computing and information technology with the help of topics listed in the syllabus.

The general teaching pedagogy that can be followed by teaching faculties for this course includes class lectures, laboratory activity, group discussions, case studies, guest lectures, research work, project work, assignments (Theoretical and Practical), and written and verbal examinations.

Text and Reference Books

Reference Books

  1. Elliotte Rusty Harold, “Java Network Programming”, O’Reilly, 2014.
  2. Douglas E. Corner, David L. Stevens, “Internetworking with TCP_IP, Vol. III_ Client-Server Programming and Applications, Linux_Posix Sockets Version” Addison-Wesley, 2000.
  3. David Reilly, Michael Reilly, “Java Network Programming and Distributed Computing”, Addison-Wesley Professional, 2002
  4. Kenneth L. Calvert, Michael J. Donahoo, “TCP-IP Sockets in Java. Practical Guide for Programmers”, Morgan Kaufmann, 2008.
  5. Andrew S. Tanenbaum, David J. Wetherall, “Computer Networks, 5/e”, Prentice Hall, 2011
  6. Kurose, Ross, “Computer Networking: A Top-Down Approach”, Pearson Education Limited, 2017.
Top