Netzwerkprogrammierung mit Java

 

zurück zu java basics part2 <--- ---> weiter zu java and networking part 2

import java.net
Infos:              Network (IP,…) Transport (TCP, UDP,…). Total 65535 Ports. Port 1 bis 1023 sind für Systemdienste.
Port 0/NULL liefert freien Port

InetAdress-Class

try {  InetAddress adresse = InetAddresse.getByName(“www.suvi.org”);                       // www.hsr.ch/152.96.128.80
       System.out.println(adresse);
     // InetAddress[] adressen = InetAddress.getAllByName(“www.hsr.ch”); //holt alle IP-Adressen
}

catch (UnknownHostException e)
 { System.out.println ( “couldn’t find host “ +e.toString() );
public static InetAddress getLocalHost() // liefert lokale IP
public String getHostName()                  // liefert den Hostname einer InetAdress
public byte[] getAddress()                     // liefert InetAddress zurück or getAllByNAme(“www.suvi.org”)

Client-Socket

public Socket (String host, int port) throws UnknownHostException, IOException
public Socket (InetAddress host, int port) throws IOException
Beispiel:
import java.io.*; import java.net.*;
public class EchoClient
{
 public static void main(String[] args) throws IOException
 {
  Socket echoSocket = null;    PrintWriter out = null;              BufferedReader in = null;
 try{
  echoSocket = new Socket (“servername”, 77);
  out = new PrintWriter(echoSocket.getOutputStream(), true);
  in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
 } catch (Exception e) { System.out.println(e); exit(1); }
 BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
 String userInput;
 while ((userInput = stdIn.readLine()) !=null)
 { out.println(userInput);
  System.out.println(“echo: “ + in.readLine());
 }
 out.close(); in.close(); stdIn.close();
 echoSocket.close();
 }
}

Server-Socket

public ServerSocket(int port) throws IOException
public ServerSocket(int port, int queueLength, InetAddress bindAddress) throws IOException

Thread-per-Client-Modell

import java.io.*; import java.net.*;
public class DelayedEchoServer extends Thread
{
 Socket _clientSocket;            BufferedReader _br;              PrintWriter _pw:
 public DelayedEchoServer (Socket clientSocket)
 { _clinetSocket = clientSocket;
  try{ _br = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
  _pw = new PrintWriter(clientSocket.getOutputStream());
 } catch (IOException ioe) { ioe.printStackTrace(); }
 this.start();
}

 public void run()
 {
  try{ String string = _br.readLine();
  System.out.println(“Wait 30sec“);
  try{ this.sleep(30000);
   } catch ( InterruptException io) {}
  _pw.write(string);
  _br.close(); _pw.close(); _clientSocket.close();
  } catch(IOException ioe) { ioe.printStackTrase(); }
 }

 public static void main (String args[])
 {
  try{ ServerSocket serverSocket = new ServerSocket(8888);
   while(true)                                                                         //setSoTimeout(Millisec)
   { Socket clientSocket = serverSocket.accept();                                //wartet bis Anfrage kommt
     DelayEchoServer des = new DelayedEchoServer(clientSocket);
   } catch (IOException ioe) { ioe.printStackTrace(); }
 }
}

User Datagram Protocol (UDP)

public DatagramPacket(byte[] buffer, int length); public DatagramPacket(byte[] buffer,int offset, int length)
maximal 65507 bytes pro Packet 8 Byte UDP Header 20-60Byte IP Header        (tot. 64KByte daten)

public DatagramSocket();                      //Client Socket                        //Packetgrösse von 8KByte sind ein guter kompromis
public DatagramSocket(int port);           //Server Socket
public void send(DatagramPAcket dp);                                 //sende
public void receive(DatagramPacket dp);                             //empfangen
public void close();                                                                //schliessen
public synchronized void setSOTimeout(int timeout);           //Timeout bei Server setzen ->InterruptedException

Multicast Socket          punkt-zu-Mehrpunkt

IP-Range 224.0.0.0 bis 239.255.255.255                                              //TTL (time-to-live) default:1
public void MulticastSocket(int port) throws SocketException             , joingroup( ), leavegroup( ), send( ); receive( )

URL class        (Uniform Resource Locators)

try{
 URL u = new URL(“http://www.hsr.ch/index.html”);           //u.getProtocol(); u.getHost(); u.getPort(); u.getFile(); u.getRef();
 BufferedReader theHTML = new BufferedReader(new InputStreamReader(u.openStream());       //HTTP daten holen
 while((thisLine = theHTML.readLine() ! = null) { System.out.println(thisLine);
} cacht(Exception e) { System.err.println(e); }

public URLConnection openConnection();             //öffnet Verbindung                                               uc.setDoOutput(true);
                URLConnection uc = u.openConnection();            uc.getInputStream();              uc.getOutpuStream();

public final Object getContent();                            //liefert MIME-Header text/plain text/generic image/gif image/jpeg
                Object o = u.getContent();      System.out.println(o.getClass().getName());

zurück zu java basics part2 <--- ---> weiter zuto java and networking part 2