Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.t99sdevelopment.philesd;
- import javax.xml.bind.DatatypeConverter;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.security.MessageDigest;
- import java.util.Scanner;
- import java.util.regex.*;
- public class Main {
- public static void main (String[] args) {
- ServerSocket server;
- Socket client;
- InputStream in;
- OutputStream out;
- try {
- server = new ServerSocket(1234);
- System.out.println("Server has started on localhost.\r\nWaiting for a connection...");
- client = server.accept();
- System.out.println("A client connected.");
- in = client.getInputStream();
- out = client.getOutputStream();
- String data = new Scanner(in, "UTF-8").useDelimiter("\\r\\n\\r\\n").next();
- Matcher get = Pattern.compile("^GET").matcher(data);
- 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
- Matcher match = Pattern.compile("Sec-WebSocket-Key: (.*)").matcher(data);
- match.find();
- 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");
- out.write(response, 0, response.length);
- } else {
- //
- }
- byte[] testMessage = ("Testing... testing... 1 2 3.").getBytes("UTF-8");
- out.write(testMessage, 0, testMessage.length);
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement