Socket programming with UDP
and TCP
Socket Programming with TCP
Connection oriented
Handshaking procedure
Reliable byte-stream
TCP-client in Java
import java.io*;
import java.net.*;
Class TCPClient {
public static void main (String argv[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(
new InputStreamReader(system.in));
Socket clientSocket = new Socket(hostname, 6789);
DataOutpuStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + \n);
modifiedSentence = inFromServer.readLine();
System.out.println(FROM SERVER: + modifiedSentence);
clientSocket.close(); } }
TCP-client in Java
import java.io*;
import java.net.*;
Imports needed packages
Class TCPClient {
public static void main (String argv[]) throws Exception {
Standard Java initiation
TCP-client in Java
String sentence;
String modifiedSentence;
Declares two string objects
BufferedReader inFromUser = new BufferedReader(
new InputStreamReader(system.in))
Creates a stream that handels input from the
user
TCP-client in Java
Socket clientSocket = new Socket(hostname, 6789) ;
Initiate a TCP-connection with the hostname
through port 6789
Client performes a DNS lookup to obtain host
IP.
DataOutpuStream outToServer = new DataOutputStream(
clientSocket.getOutputStream())
Creates a stream that handels output to
server
TCP-client in Java
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
Creates a stream that handels input from
server
sentence = inFromUser.readLine()
Puts the input from user into string object
TCP-client in Java
outToServer.writeBytes(sentence + \n);
Transform sentence to bytes & sends to server
modifiedSentence = inFromServer.readLine();
Puts input from server into modified sentence
System.out.println(FROM SERVER: + modifiedSentence);
clientSocket.close(); } }
Prints modifiedSentence and closes the
connection
TCP-server in Java
import java.io*;
import java.net.*;
Class TCPServer {
public static void main (String argv[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket (6789);
while (true) {
Socket connenctionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader( new InputStreamReader(
connectionSocket.getInputStream()));
DataOutpuStream outToClient = new DataOutputStream(
connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + \n;
outToClient.writeBytes(capitalizedSentence);
}
}}
TCP-server in Java
ServerSocket welcomeSocket = new ServerSocket (6789);
Creates a welcomeSocket that handels
connection-attempts from port 6789
Socket connenctionSocket = welcomeSocket.accept();
Creates a new socket
TCP-server in Java
capitalizedSentence = clientSentence.toUpperCase() + \n;
This command is the essence of the
application.
Socket Programming with UDP
Connectionless
No reliable datatransfer
UDP-client in Java
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[ ]) throws Exception {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(hostname);
byte[ ] sendData = new byte[1024];
byte[ ] recieveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes ();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modefiedSentence = new String(receivePacket.getData());
System.out.println(FROM SERVER: + modifiedSentence);
clientSocket.close();
}
}
UDP-client in Java
DatagramSocket clientSocket = new DatagramSocket();
This line does not initiate a TCP connection
InetAddress IPAddress = InetAddress.getByName(hostname);
Uses DNS lookup to find the IP-address for
hostname
UDP-client in Java
byte[ ] sendData = new byte[1024];
byte[ ] recieveData = new byte[1024];
Arrays that contains bytes that will be sent
and recieved
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
IPAddress, 9876);
Creates a packages that containes travel
information
UDP-client in Java
clientSocket.send(sendPacket);
Sends the package through the client socket
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
Creates a placeholder for the package
clientSocket.receive(receivePacket);
Rececives the package from the server
UDP-client in Java
String modefiedSentence = new String(receivePacket.getData());
Extracts the data from the package and puts it
in a string package
clientSocket.close();
Closes the client socket
UDP-server in Java
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[ ]) throws Exception {
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[ ] receiveData = new byte[1024];
byte[ ] sendData = new byte[1024];
while(true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String catitalizedSentence = sentence.toUpperCase();
sendData = capetalizedSentence.getBytes ();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.send(sendPacket);
}
}}
UDP-server in Java
DatagramSocket serverSocket = new DatagramSocket(9876);
Creates a socket at port 9876 that data passes
through
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
Extracts the data and client information from
the package