Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 26th, 2012  |  syntax: Java  |  size: 3.40 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. //package p3_serverv1;
  6.  
  7. /**
  8.  *
  9.  * @author Edward
  10.  */
  11. import java.io.FileInputStream;
  12. import java.io.OutputStream;
  13. import java.net.*;
  14. import java.security.KeyStore;
  15. import java.security.SecureRandom;
  16. import javax.net.ssl.KeyManagerFactory;
  17. import javax.net.ssl.SSLContext;
  18. import javax.net.ssl.SSLServerSocket;
  19. import javax.net.ssl.SSLServerSocketFactory;
  20. import javax.net.ssl.SSLSocket;
  21. public class server{
  22.  
  23.     /**
  24.      * @param args the command line arguments
  25.      */
  26.    
  27.     public static void main(String[] args) throws Exception {
  28.         if (args.length != 1) {
  29.             System.err.println("Invocation: java Server <PORT>");
  30.             System.exit(-1);
  31.         }
  32.        
  33. System.setProperty("javax.net.ssl.keyStore", "server.store");
  34. System.setProperty("javax.net.ssl.keyStorePassword", "server.secret");
  35. System.setProperty("javax.net.ssl.trustStore", "server.trust");
  36.  
  37.         KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509", "SunJSSE");
  38.        
  39.         KeyStore ks = KeyStore.getInstance("JKS"); //provider=SUN
  40.        
  41.         ks.load(new FileInputStream("server.store"),"server.secret".toCharArray());
  42.        
  43.         kmf.init(ks, "server.secret".toCharArray());
  44.        
  45.         SSLContext context = SSLContext.getInstance("TLSv1", "SunJSSE");
  46.        
  47.         context.init(kmf.getKeyManagers(), null, new SecureRandom());
  48.        
  49.        
  50.         /* Utworzenie gniazda nasluchujacego: */
  51.         SSLServerSocketFactory sf = context.getServerSocketFactory();
  52.  
  53.         SSLServerSocket listeningSocket = (SSLServerSocket)sf.createServerSocket();
  54.         //SSLServerSocket listeningSocket = (SSLServerSocket) SSLServerSocketFactory.getDefault();
  55.  
  56.         /* Utworzenie obiektu InetSocketAddress na podstawie numeru portu: */
  57.         InetSocketAddress sa = new InetSocketAddress(Integer.parseInt(args[0]));
  58.  
  59.         /*
  60.          * Powiazanie gniazda serwera z numerem portu i adresem IP wildcard.
  61.          * Serwer bedzie nasluchiwal na wszystkich interfejsach:
  62.          */
  63.         listeningSocket.bind(sa);
  64.  
  65.         System.out.println("Server is listening for incoming connections...");
  66.  
  67.         /* Wiadomosc do wyslania: */
  68.         String message = "Laboratorium PUS.";
  69.  
  70.         while (true) {
  71.  
  72.             /*
  73.              * Akceptacja ustanowionego polaczenia TCP i utworzenie dla nowego
  74.              * polaczenia gniazda Socket:
  75.              */
  76.             SSLSocket connectedSocket = (SSLSocket) listeningSocket.accept();
  77.  
  78.             /* Pobranie adresu klienta: */
  79.             InetSocketAddress rsa = (InetSocketAddress)connectedSocket.getRemoteSocketAddress();
  80.  
  81.             System.out.println("Connection accepted from " + rsa.getAddress().getHostAddress() + ":" + connectedSocket.getPort());
  82.  
  83.             /* Pobranie strumienia wychodzacego (do zapisu): */
  84.             OutputStream os = connectedSocket.getOutputStream();
  85.  
  86.             /* Wyslanie wiadomosci: */
  87.             os.write(message.getBytes("UTF-8"));
  88.  
  89.             /*
  90.              * Zamkniecie gniazda polaczonego. Serwer bedzie nasluchiwal dalej
  91.              * na nowe polaczenia.
  92.              */
  93.             connectedSocket.close();
  94.             /*
  95.              * Zamkniecie gniazda powoduje zamkniecie skojarzonych z nim
  96.              * strumieni.
  97.              */
  98.  
  99.         }
  100.     }
  101. }