/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Publisher; import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.net.InetAddress; import java.net.Socket; import java.nio.channels.Channels; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; /** * * @author Bryden */ public class CPublisher { private static final int Max_Buffer = 512; private final InetAddress objAdd; private final int intPort; private final String[] strBuffer = new String[Max_Buffer]; int intId = 0; public CPublisher(InetAddress pObjAdd, int pIntPort) { objAdd = pObjAdd; intPort = pIntPort; } public void sendMessage(String pStrMessage) { int intTemp; synchronized (strBuffer) { strBuffer[intId] = pStrMessage; intTemp = intId++; } new Thread(() -> { try (Socket client = new Socket(objAdd, intPort)) { Writer objWriter = Channels.newWriter(Channels.newChannel(client.getOutputStream()), StandardCharsets.US_ASCII.name()); synchronized (strBuffer) { objWriter.write(String.format(pStrMessage, intTemp, new SimpleDateFormat("HH:mm dd-MMM").format(new Date()))); objWriter.flush(); } client.shutdownOutput(); try (Reader objReader = Channels.newReader(Channels.newChannel(client.getInputStream()), StandardCharsets.US_ASCII.name()); BufferedReader objOutReader = new BufferedReader(objReader)) { System.out.println(objOutReader.readLine()); } } catch (IOException e) { System.out.println(e); } }).start(); } }