
Master practical java network programming with pure socket programming in java jdk 8 or later. Explore http, ftp, smtp, pop3, imap, ipv6, ssl socket, proxy servers, multithreading, ntp, and whois.
Prepare your bootcamp environment with Windows, Linux, or Mac OS, Java JDK 8+, and an editor such as IntelliJ, VS Code, Eclipse, or NetBeans, plus internet access for projects.
Develop foundational Java programming skills by learning to define variables, use operators and statements, looping, classes, inheritance, and exceptions as you learn to build Java programs.
Install Oracle Java SE and JDK 8, set up IntelliJ IDEA, and create a new Java project to run a hello world program with System.out.println.
Declare variables in Java by choosing a data type such as int, String, Double, or Boolean, name your variable, and assign a value. Print with System.out.println() in VarDemo.
Explore how to use Java operators, including relational and logical operators, to build boolean expressions, compare numbers, and print true or false.
learn to input and output in java by using system.in and system.out, and read data with scanner for strings and numbers, including next(), nextInt(), then close the scanner after use.
Master if-conditionals in Java by initializing values, testing conditions such as greater than eight, and executing true or false branches, including and/or combinations.
Master Java looping techniques using for, while, and do..while to control initialization, condition checks, and increments in practical network programming scenarios.
Learn to declare and initialize arrays of integers and strings in Java, assign and retrieve values, and work with lists and generics to store and display data.
Learn how to declare a Java class with public class, define fields and setters and getters, create constructors, use this for initialization, and call methods like greeting and calculate.
Learn how to implement inheritance in Java by extending a shape parent class with rectangle, using public and protected members, and calling say and show methods.
Learn how to declare and implement interfaces in Java, override methods like greeting and calculate, and use classes like ClassA and ClassB to instantiate and call these interface methods.
Implement Java exception handling by using try, catch, and throw to manage errors, including divide by zero, and understand that Exception is the parent class for all errors.
Learn how a socket enables two-way communication between server and client, bound to a port on the application layer, with TCP/IP and UDP/IP hands-on practice.
Explore getting a local ip address with java.net, using InetAddress.getLocalHost and getHostName, looping through interfaces with getAllByName to handle IPv4 and IPv6, including loopback checks.
Build a tcp/ip client-server using server socket and socket, exchange data via input and output streams on a chosen port, and exit when the client sends 'Exit'.
Implement a UDP client-server using datagram sockets, binding port 8088, handling datagram packets, and exchanging 'how are you' data via getByName() resolved IP and port.
Learn to transfer a file from a Java server to a client using tcp/ip sockets, opening port 8881 and streaming data with file and socket streams.
Learn how Java threads enable simultaneous execution of multiple tasks, create and manage threads, apply thread pooling, timers, and synchronization in practical hands-on labs.
Learn to create Java threads by extending Thread or implementing Runnable, override run, instantiate ThreadDemo, and start threads to observe asynchronous output printing 0–4 and 10–14 to the terminal.
Learn to implement a timer using TimerTask by overriding run and scheduling a timer that prints a calendar-based counter every second until it reaches 10, then exits.
Learn how to implement thread pooling with an executor service using newCachedThreadPool to run multiple tasks simultaneously. Achieve a clean shutdown after tasks complete.
Discover two methods to stop Java threads: interrupt() for an immediate halt and a finish flag like isFinished with setFinish for graceful termination, demonstrated with Runnable loops and join.
Learn thread synchronization by implementing a shared counter with TaskA incrementing and TaskB decrementing, contrasting unsynchronized race conditions with a synchronized version that preserves data safety.
Explore the HTTP protocol essentials in this bootcamp section, learning how clients send GET and POST requests, how servers respond, and how headers and body form an HTTP message.
Learn to fetch a web page by constructing an HTTP GET request with a Java socket, sending headers, and reading the server response.
Perform an http post with a Java socket to a PHP server at /udemy/testjson.php on port 80, sending a json body with num1 and num2 and Content-Type: application/json
Build a Java application to download an image over http with a socket, sending the header and reading the body via the input stream, then save the image locally.
Learn to perform HTTP requests with basic authentication by encoding credentials in Base64, setting the Authorization header, and handling 401 unauthorized responses using a PHP server for authentication.
Explore mail network protocols smtp, pop3, and imap, with commands like helo, mail from, rcpt to, data, login, list, fetch, and logout; engage in hands-on labs to implement these concepts.
Develop a Java socket-based SMTP client that uses a fake SMTP server on port 25 to send helo/ehlo, mail from, rcpt to, data with message content, then quit.
Learn to build a sending app using sockets and SMTP with authentication, including EHLO, AUTH LOGIN, base64 encoding of username and password, and MAIL FROM, RCPT TO, DATA commands.
Connect to the smtp server and authenticate, then send a multipart email with a text body and a base64-encoded image attachment using mime boundaries and proper headers.
Learn how to build a Java socket application to retrieve email from a POP3 server by issuing USER, PASS, LIST, and DELE commands, reading messages, and quitting.
Master socket programming to build an IMAP client that connects to a mail server, authenticates with login, selects the inbox, fetches an email, and logs out using IMAP commands.
Learn the ftp protocol and client-server commands, with hands-on labs to upload, download, list, and delete files using a Java socket application and an ftp server.
Build an ftp client to connect to an ftp server, authenticate with user and pass, enter pasv mode, issue list, and parse responses to retrieve folders and files.
Learn to build a Java socket ftp client that uploads a file by authenticating, using binary mode (type i), pasv, and the stor command.
Build a Java application to download a file from an FTP server using sockets, implementing binary mode, passive mode with PASV, RETR, and data transfer to a local file.
Connect to an ftp server and authenticate with user and password. Send dele command to delete a file via a Java socket, then quit and verify the file is removed.
Explore IPv6, learn its address notation using colons, and practice local IPv6 networking with hands-on labs on client-server communication.
Learn how to retrieve the local IPv6 address in Java using Inet6Address.getAllByName, validate Inet6Address instances, and view the IPv6 address on the local machine and local wifi.
Build an IPv6 client-server socket program, exchanging hello messages via input and output streams on port 8881, with the server waiting for client and a clean disconnect on exit.
Explore TLS/SSL fundamentals, including the handshake (ClientHello and ServerHello), certificate exchanges, and securing data with TLS across TCP/IP; apply via labs on https requests over SSL sockets and keystore setup.
Build a Java application that performs HTTPS requests over SSL with SSLSocketFactory, connects to host on port 443, performs handshake, sets cipher suites, issues HTTP GET, and prints the response.
Create keystores and certificates for a client-server SSL socket using keytool and OpenSSL to generate RSA keys and produce server.jks and client.jks, then import server and client certificates.
Build an SSL client-server socket program over TCP/IP, configuring server and client keystores and truststores, and enabling cipher suites. Perform handshake, exchange certificates, exchange hello messages, and close the connection.
Explore how a proxy server acts as an intermediary for client requests behind firewalls and complete two labs: http requests over a proxy and a java proxy client with authentication.
Learn to communicate with a proxy server and perform http requests through a socks proxy in Java by building a proxy client and testing with a Windows proxy.
Build a Java proxy client that authenticates with a socks proxy and performs http requests via the proxy. Configure authenticator and proxy settings, and observe authentication outcomes.
This bootcamp is designed for everyone who wants to learn and upgrade network programming skill using Java. The bootcamp focuses on Socket programming so that students could understand how network protocol work. Various network protocols are explored in order to get more practices in network programming.
For students without Java programming skill, I'll give a brief Java programming so you can follow this bootcamp. You will learn the following topics:
declaring variables
working with input/output
declaring operators
making conditional statements with if and switch
making loop statements
working with array and collection
learning OOP with Java such as Class, Inheritance, Interface
handling errors and exceptions
In this bootcamp, you will learn how to write Java Socket programs for network context. Starting to learn basic Socket programming using Java. Then, you will learn about multithreading in Java. You will implement the following protocol using Java Socket:
HTTP
FTP
SMTP
POP3
IMAP
Next, we explore advanced Socket topics such as SSL Socket, HTTPS, Proxy Server. We also learn how to build Socket programs for NTP and Whois protocols.