Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Server extends Thread {
- private DatagramSocket socket;
- private DatagramPacket packet;
- private final int serverPort=8080;
- private byte[] buffer;
- private Map<InetAddress,Integer> mapKlienti;
- private Map<InetAddress,Integer> mapBotovi; //moze da se koristi i edna mapa za site...
- private ArrayList<String> poraki;
- public Server() {
- try {
- socket =new DatagramSocket(serverPort);
- buffer=new byte[1024];
- mapKlienti =new HashMap<>();
- mapBotovi=new HashMap<>();
- poraki=new ArrayList<>();
- } catch (SocketException e) {
- e.printStackTrace();
- }
- }
- public void resetBuffer(){
- buffer=new byte[1024];
- }
- public void sendPacket(String message, InetAddress ipClient, int clientPort){
- resetBuffer();
- buffer=message.getBytes();
- packet =new DatagramPacket(buffer,buffer.length,ipClient,clientPort);
- try {
- socket.send(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public String receivePacket(){
- String retString=null;
- resetBuffer();
- packet=new DatagramPacket(buffer,buffer.length);
- try {
- socket.receive(packet);
- retString=new String(packet.getData()).trim();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return retString;
- }
- @Override
- public void run() {
- System.out.println("Serverot e pusten...");
- while (true){
- //info of chat_klient ili chat_bot
- resetBuffer();
- boolean flag=true; ///klient ili bot true-klient | false-bot
- packet=new DatagramPacket(buffer,buffer.length);
- try {
- socket.receive(packet);
- String clientOrBot=new String(packet.getData()).trim();
- if(clientOrBot.equals("*client"))
- flag=true;
- else if(clientOrBot.equals("*bot"))
- flag=false;
- } catch (IOException e) {
- e.printStackTrace();
- }
- InetAddress ipAddressHere=packet.getAddress();
- int portHere=packet.getPort();
- if(flag){ // komunikacija server-klient
- System.out.print("Klient se najavi so korisnicko ime: ");
- mapKlienti.put(ipAddressHere,portHere);
- String username=receivePacket();
- System.out.println(username);
- String poraka=receivePacket();
- System.out.println("Klient saka da isprati: "+poraka);
- poraki.add(poraka);
- //prati ja porakata na site klienti
- for(InetAddress address:mapKlienti.keySet()){
- for(String msg: poraki){
- sendPacket("Dobivte poraka -> "+msg,address,mapKlienti.get(address));
- }
- }
- }else { //komunikacija bot-server
- System.out.print("Bot se najavi so korisnicko ime: ");
- mapBotovi.put(ipAddressHere,portHere);
- String username=receivePacket();
- System.out.println(username);
- String primenaPoraka=receivePacket();
- if(primenaPoraka.equals("zdravo")){
- sendPacket("Zdravo i od mene!",ipAddressHere,portHere);
- }
- //prati ja porakata na site botovi
- for(InetAddress address:mapBotovi.keySet()){
- for(String msg: poraki){
- sendPacket("Dobivte poraka -> "+msg,address,mapBotovi.get(address));
- }
- }
- }
- }
- }
- public static void main(String[] args) {
- Server server=new Server();
- server.start();
- }
- }
- ----------------CLIENT------------
- public class Client extends Thread {
- private DatagramSocket socket;
- private DatagramPacket packet;
- private final int serverPort=8080, clientPort=8081;
- private byte[] buffer;
- public Client() {
- try {
- socket =new DatagramSocket(clientPort);
- buffer=new byte[1024];
- } catch (SocketException e) {
- e.printStackTrace();
- }
- }
- public void resetBuffer(){
- buffer=new byte[1024];
- }
- public void sendPacket(String message, InetAddress ipClient){
- resetBuffer();
- buffer=message.getBytes();
- packet =new DatagramPacket(buffer,buffer.length,ipClient,serverPort);
- try {
- socket.send(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public String receivePacket(){
- String retString=null;
- resetBuffer();
- packet=new DatagramPacket(buffer,buffer.length);
- try {
- socket.receive(packet);
- retString=new String(packet.getData()).trim();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return retString;
- }
- @Override
- public void run() {
- //poraka deka e klient so username
- try {
- sendPacket("*client",InetAddress.getLocalHost() );
- sendPacket("David",InetAddress.getLocalHost());
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- new Thread(new ClientListener(socket)).start();
- //isprakanje na poraka
- try {
- sendPacket("zdravo jas sum David",InetAddress.getLocalHost());
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Client client=new Client();
- client.start();
- }
- }
- ------------CLIENT-LISTENER-----------------
- public class ClientListener extends Thread {
- private DatagramSocket socket;
- private DatagramPacket packet;
- private byte[] buffer;
- public ClientListener(DatagramSocket socket) {
- this.socket = socket;
- buffer=new byte[1024];
- }
- @Override
- public void run() {
- while (true){
- buffer=new byte[1024];
- packet=new DatagramPacket(buffer,buffer.length);
- try {
- socket.receive(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- String receivedMsg=new String(packet.getData()).trim();
- System.out.println(receivedMsg);
- }
- }
- }
- ----------------------------BOT-------------------
- public class Bot extends Thread {
- private DatagramSocket socket;
- private DatagramPacket packet;
- private final int serverPort=8080, botPort =8084;
- private byte[] buffer;
- public Bot() {
- try {
- socket =new DatagramSocket(botPort);
- buffer=new byte[1024];
- } catch (SocketException e) {
- e.printStackTrace();
- }
- }
- public void resetBuffer(){
- buffer=new byte[1024];
- }
- public void sendPacket(String message, InetAddress ipBot){
- resetBuffer();
- buffer=message.getBytes();
- packet =new DatagramPacket(buffer,buffer.length,ipBot,serverPort);
- try {
- socket.send(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public String receivePacket(){
- String retString=null;
- resetBuffer();
- packet=new DatagramPacket(buffer,buffer.length);
- try {
- socket.receive(packet);
- retString=new String(packet.getData()).trim();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return retString;
- }
- @Override
- public void run() {
- //poraka deka e bot
- try {
- sendPacket("*bot",InetAddress.getLocalHost() );
- sendPacket("ChatBot1",InetAddress.getLocalHost());//username
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- new Thread(new ClientListener(socket)).start(); //istata ja koristam za slusanje i za botovite...
- //prati poraka zdravo
- try {
- sendPacket("zdravo",InetAddress.getLocalHost());
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Bot bot=new Bot();
- bot.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement