codisinmyvines

SocketsBairasheva

Dec 19th, 2021
859
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.85 KB | None | 0 0
  1. //Клиент
  2. package hw13;
  3.  
  4. import javax.swing.*;
  5. import java.awt.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.geom.Ellipse2D;
  9. import java.awt.geom.Rectangle2D;
  10. import java.io.*;
  11. import java.net.DatagramPacket;
  12. import java.net.DatagramSocket;
  13. import java.net.InetAddress;
  14.  
  15. class PictureFrame extends JFrame implements Serializable {
  16.     private boolean a = false;
  17.  
  18.     public PictureFrame() {
  19.         setSize(800, 600);
  20.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  21.         JPanel picture2 = new JPanel();
  22.         picture2.setLayout(new CardLayout());
  23.         PaintComponent1 smile1 = new PaintComponent1();
  24.         PaintComponent2 smile2 = new PaintComponent2();
  25.         picture2.add(smile1);
  26.         picture2.add(smile2);
  27.         JPanel panelforbtn = new JPanel();
  28.         panelforbtn.setLayout(new FlowLayout());
  29.         JButton button = new JButton("Change channel");
  30.         ((CardLayout) picture2.getLayout()).first(picture2);
  31.         button.addActionListener(new ActionListener() {
  32.             @Override
  33.             public void actionPerformed(ActionEvent e) {
  34.                 if (e.getSource() == button) {
  35.                     if (a) {
  36.                         ((CardLayout) picture2.getLayout()).first(picture2);
  37.                         a = false;
  38.                     } else {
  39.                         ((CardLayout) picture2.getLayout()).last(picture2);
  40.                         a = true;
  41.                     }
  42.                 }
  43.             }
  44.         });
  45.         panelforbtn.add(button);
  46.         getContentPane().add("Center", picture2);
  47.         getContentPane().add("South", panelforbtn);
  48.     }
  49. }
  50.  
  51. class PaintComponent1 extends JComponent {
  52.     public void paint(Graphics g) {
  53.         Graphics2D g2 = (Graphics2D) g;
  54.         //телевизор
  55.         g2.setPaint(new Color(93, 95, 107));
  56.         Rectangle2D k1 = new Rectangle2D.Double(200, 100, 400, 300);
  57.         g2.fill(k1);
  58.         g2.draw(k1);
  59.         Rectangle2D k3 = new Rectangle2D.Double(380, 400, 40, 80);
  60.         g2.fill(k3);
  61.         g2.draw(k3);
  62.         Rectangle2D k4 = new Rectangle2D.Double(300, 480, 200, 10);
  63.         g2.fill(k4);
  64.         g2.draw(k4);
  65.         g2.setPaint(new Color(144, 215, 248));
  66.         Rectangle2D k2 = new Rectangle2D.Double(220, 120, 360, 260);
  67.         g2.fill(k2);
  68.         g2.draw(k2);
  69.         //смайлик
  70.         g2.setPaint(new Color(255, 203, 0));
  71.         Ellipse2D ellipse1 = new Ellipse2D.Double(330, 170, 150, 150);
  72.         g2.fill(ellipse1);
  73.         g2.draw(ellipse1);
  74.         g2.setPaint(new Color(61, 56, 56));
  75.         Ellipse2D ellipse2 = new Ellipse2D.Double(370, 210, 20, 20);
  76.         g2.fill(ellipse2);
  77.         g2.draw(ellipse2);
  78.         Ellipse2D ellipse3 = new Ellipse2D.Double(420, 210, 20, 20);
  79.         g2.fill(ellipse3);
  80.         g2.draw(ellipse3);
  81.         Rectangle2D k5 = new Rectangle2D.Double(370, 265, 70, 10);
  82.         g2.fill(k5);
  83.         g2.draw(k5);
  84.     }
  85. }
  86.  
  87. class PaintComponent2 extends JComponent {
  88.     public void paint(Graphics g) {
  89.         Graphics2D g2 = (Graphics2D) g;
  90.         //телевизор
  91.         g2.setPaint(new Color(93, 95, 107));
  92.         Rectangle2D k1 = new Rectangle2D.Double(200, 100, 400, 300);
  93.         g2.fill(k1);
  94.         g2.draw(k1);
  95.         Rectangle2D k3 = new Rectangle2D.Double(380, 400, 40, 80);
  96.         g2.fill(k3);
  97.         g2.draw(k3);
  98.         Rectangle2D k4 = new Rectangle2D.Double(300, 480, 200, 10);
  99.         g2.fill(k4);
  100.         g2.draw(k4);
  101.         g2.setPaint(new Color(103, 255, 109));
  102.         Rectangle2D k2 = new Rectangle2D.Double(220, 120, 360, 260);
  103.         g2.fill(k2);
  104.         g2.draw(k2);
  105.         //смайлик(удивленный)
  106.         g2.setPaint(new Color(255, 203, 0));
  107.         Ellipse2D ellipse1 = new Ellipse2D.Double(330, 170, 150, 150);
  108.         g2.fill(ellipse1);
  109.         g2.draw(ellipse1);
  110.         g2.setPaint(new Color(61, 56, 56));
  111.         Ellipse2D ellipse2 = new Ellipse2D.Double(370, 210, 20, 30);
  112.         g2.fill(ellipse2);
  113.         g2.draw(ellipse2);
  114.         Ellipse2D ellipse3 = new Ellipse2D.Double(420, 210, 20, 30);
  115.         g2.fill(ellipse3);
  116.         g2.draw(ellipse3);
  117.         Ellipse2D k5 = new Ellipse2D.Double(380, 265, 50, 35);
  118.         g2.fill(k5);
  119.         g2.draw(k5);
  120.     }
  121. }
  122.  
  123. public class Client {
  124.     private static final String host = "localhost";
  125.     private static final int port = 11111;
  126.  
  127.     private static DatagramPacket createPacket() {
  128.         try {
  129.             //Используем сериализацию, т.е. записываем данные объекта в поток
  130.             ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("picture.dat"));
  131.             PictureFrame pictureFrame = new PictureFrame();
  132.             pictureFrame.setTitle("Client's picture");
  133.             pictureFrame.setVisible(true);
  134.             oos.writeObject(pictureFrame);
  135.             //Считываем файл picture.dat в буфер, для DatagramPacket
  136.             FileInputStream fin = new FileInputStream("picture.dat");
  137.             byte[] buffer = new byte[fin.available()];
  138.             fin.read(buffer, 0, fin.available());
  139.             InetAddress IPAdress = InetAddress.getByName(host);
  140.             return new DatagramPacket(buffer, buffer.length, IPAdress, port);
  141.         } catch (Exception ex) {
  142.             ex.getMessage();
  143.         }
  144.         return null;
  145.     }
  146.  
  147.     public static void main(String[] args) throws Exception {
  148.         try (DatagramSocket socket = new DatagramSocket()) {
  149.             DatagramPacket packet = createPacket();
  150.             socket.send(packet);
  151.         }
  152.     }
  153. }
  154. //Сервер
  155. package hw13;
  156.  
  157. import java.io.*;
  158. import java.net.DatagramPacket;
  159. import java.net.DatagramSocket;
  160.  
  161. public class Server {
  162.     private static final int port = 11111;
  163.  
  164.     public static void decodePacket(DatagramPacket packet) throws IOException {
  165.         try {
  166.             FileOutputStream fos = new FileOutputStream("serverpicture.dat");
  167.             fos.write(packet.getData());
  168.             //чтение ранее сериализованных данных из потока
  169.             FileInputStream fin = new FileInputStream("serverpicture.dat");
  170.             ObjectInputStream ois = new ObjectInputStream(fin);
  171.             PictureFrame pic = (PictureFrame) ois.readObject();
  172.             pic.setTitle("Server's picture");
  173.             pic.setVisible(true);
  174.         } catch (Exception ex) {
  175.             ex.getMessage();
  176.         }
  177.     }
  178.  
  179.     public static void main(String[] args) throws IOException {
  180.         try (DatagramSocket socket = new DatagramSocket(port)) {
  181.             byte[] buf = new byte[10000];
  182.             DatagramPacket packet = new DatagramPacket(buf, buf.length);
  183.             while (true) {
  184.                 socket.receive(packet);
  185.                 decodePacket(packet);
  186.             }
  187.         }
  188.     }
  189. }
  190.  
Advertisement
Add Comment
Please, Sign In to add comment