Advertisement
T99

philesd.java

T99
Sep 3rd, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.96 KB | None | 0 0
  1. package com.t99sdevelopment.philesd;
  2.  
  3. import javax.xml.bind.DatatypeConverter;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.security.MessageDigest;
  9. import java.util.Scanner;
  10. import java.util.regex.*;
  11.  
  12. public class Main {
  13.  
  14.     public static void main (String[] args) {
  15.  
  16.         ServerSocket server;
  17.         Socket client;
  18.         InputStream in;
  19.         OutputStream out;
  20.  
  21.         try {
  22.  
  23.             server = new ServerSocket(1234);
  24.  
  25.             System.out.println("Server has started on localhost.\r\nWaiting for a connection...");
  26.  
  27.             client = server.accept();
  28.  
  29.             System.out.println("A client connected.");
  30.  
  31.             in = client.getInputStream();
  32.             out = client.getOutputStream();
  33.  
  34.             String data = new Scanner(in, "UTF-8").useDelimiter("\\r\\n\\r\\n").next();
  35.  
  36.             Matcher get = Pattern.compile("^GET").matcher(data);
  37.  
  38.             if (get.find()) { // Do not ask me to explain this, just see https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java#Handshaking
  39.  
  40.                 Matcher match = Pattern.compile("Sec-WebSocket-Key: (.*)").matcher(data);
  41.                 match.find();
  42.                 byte[] response = ("HTTP/1.1 101 Switching Protocols\r\n" + "Connection: Upgrade\r\n" + "Upgrade: websocket\r\n" + "Sec-WebSocket-Accept: " + DatatypeConverter.printBase64Binary(MessageDigest.getInstance("SHA-1").digest((match.group(1) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").getBytes("UTF-8"))) + "\r\n\r\n").getBytes("UTF-8");
  43.                 out.write(response, 0, response.length);
  44.  
  45.             } else {
  46.  
  47.                 //
  48.  
  49.             }
  50.  
  51.             byte[] testMessage = ("Testing... testing... 1 2 3.").getBytes("UTF-8");
  52.             out.write(testMessage, 0, testMessage.length);
  53.  
  54.         } catch (Exception e) {
  55.  
  56.             System.out.println(e);
  57.  
  58.         }
  59.  
  60.     }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement