Skip to content
João Pedro Viana edited this page Sep 17, 2016 · 4 revisions

Some example use lambda expression. Your Java configuration will need to be set appropriately for that.

Instantiate a new Socket object using one of two methods below:

      // Use this:
      java.net.ServerSocket server = new ServerSocket(port); // Used to accept connections
      java.net.Socket conn = server.accept();                // Accepts a TCP Socket connection
      // Or this:
      java.net.Socket conn = new Socket("ipaddress", port);  // Connect to a TCP server
      // to instantiate Socket object and wrap with following classes

Then wrap with one of the following classes

JSocket -- capable of sending and receiving a byte[], sample code:

      JSocket sock = new JSocket(conn);     // Wraps around Socket
      
      sock.send(object.getBytes());     // Pass a byte[] as argument
      
      byte[] fixedBytes = sock.recv();  // Receives bytes, buffer size is limited
      
      sock.CHUNK_SIZE = 128; // Set how big of chunks to read, all subclasses inherit this

      byte[] allBytes = sock.recv_all(size);  // Receives bytes, buffer size is dynamic

      sock.send_all(allBytes, allBytes.length);  // can send a large byte array
      
      sock.close();  // Closes Socket and I/O stream objects, inherited by all subclasses

MessageSocket -- sends and receives strings, implementation 1:

      MessageSocket sock = new MessageSocket(conn);          // Wraps around Socket
  
      sock.send_msg("Hello World!");     // Pass a string as argument, string is written to stream and sent
  
      String msg = sock.recv_msg();      // Receives a message, buffer size is limited
  
      String wholeMsg = sock.recv_all_msg(size);  // If message is large, use this to set new buffer size

MessageSocket -- with lambda functions, implementation 2:

      // The following will configure MessageSocket to use a filtering function on the received message

      MessageSocket sock = new MessageSocket(conn, (s) -> {
          return s.replace('/', '-');
      });

      // Or you can use a predefined function from the FunctionTool class

      sock.setDefaultFunction(FunctionTool.sanitizeFunction(FunctionType.ONLY_NULLS);

      // Then you can use the following to have the lambda function be applied to the incoming message
      // Following uses first configuration

      String dateMessage = sock.recvSanitizedMsg() // incoming msg: 8/5/2015 -- dateMessage will have 8-5-2015

      // Following uses second

      String sanitizedMessage = sock.recvSanitizedMsg() // incoming: h\0e\0l\0l\0o\0 -- sanitizedMessage = hello

      // If there is only one instance a certain function needs to be used, 
      // the following allows a function to be used for a single instance

      String msg = sock.recvSanitizedMsg((s) -> {
          String clean = "";
          for (char c : s.toCharArray())
              if (c != '\0')
                  clean += c;
          clean = clean.replace("Bob", "Will");
          return clean;
      });

      // This method has an overload that uses a boolean for a second argument that will tell the class to use 
      // the function that was passed as the default for all following incoming requests

      // this class is backwards compatible with implementation 1

ObjectSocket -- sends and receives objects, converts objects to and from JSON, sample code:

      ObjectSocket sock = new ObjectSocket(conn);            // Wraps around Socket
      
      Person p = new Person("William", 22);
      
      sock.send_object(p, Person.class);           // Object will be converted to a JSON String and sent
      
      Person p2 = sock.recv_object(Person.class);  // Specify class type and it will return an object of that type
      
      String json = sock.recv_object_asString();   // Returns the JSON that is received
      
      String failedJson = sock.recover_failed_json() // Should parsing the received JSON fail, you can recover it

FileTransferSocket -- send and receive files over a Socket connection. File can be of any format and of arbitrary size.

      FileTransferSocket sock = new FileTransferSocket(conn);     // Wraps around Socket
      
      File f = new File("/Users/username/Desktop/Person.java");  // File to be sent
      
      sock.send_file(f);           // Object will be converted to a JSON String and sent
      
      File rF = sock.recv_file(path);  // Specify path to save file as String and it will write the file to that location

JSocket is released under the MIT License. Here are the Terms and Conditions.

Clone this wiki locally