200 likes | 402 Views
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;
E N D
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