如何将Arraypoints发送到TCPServer并使TCPClient接收

时间:2016-04-15 10:47:44

标签: java swing

我有一台服务器,一个客户端和一个JFrame,我对如何使服务器获取我的Arraypoints以及建立一个客户端(最好是在另一台设备上)感到不安全,接收这些阵列点。我已经在这个问题上坚持了很长一段时间,所以任何想法或猜测都非常感激。我没有找到任何类似于我在这个论坛上试图做的项目,所以我被卡住了。

客户机侧:

public class TCPClient {

    public static void main(String argv[]) throws Exception {

        ConnectionFrame CF = new ConnectionFrame();

        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
        Socket clientSocket = new Socket("localhost", 6789);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        sentence = inFromUser.readLine();
        outToServer.writeBytes(sentence + '\n');
        modifiedSentence = inFromServer.readLine();
        System.out.println("FROM SERVER: " + modifiedSentence);
        clientSocket.close();
    }
}

了Serverside:

public class TCPServer {

    public static final int SERVERPORT = 6789;  

    public static void main(String argv[]) throws Exception {
        String clientSentence;
        String capitalizedSentence;
        ServerSocket welcomeSocket = new ServerSocket(SERVERPORT);

        CanvasFrame cf = new CanvasFrame();

        while(true) {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

            clientSentence = inFromClient.readLine();
            System.out.println("Received: " + clientSentence);
            capitalizedSentence = clientSentence.toUpperCase() + '\n';
            outToClient.writeBytes(capitalizedSentence);        
        }
    }
}

我的画布(Jframe):

public class CanvasFrame extends JPanel {

    ArrayList<Point> location = new ArrayList<Point>(); 

    JTextArea consoleOutput = new JTextArea(1,20);

    public void addComponentToPane(Container pane) {
        consoleOutput.setEditable(false);
    }

    public CanvasFrame() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                location.clear();
                location.add(e.getPoint());
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                location.add(e.getPoint());
                repaint();
            }
        });
        setPreferredSize(new Dimension(800, 500));
        setBackground(Color.WHITE);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        if(location.isEmpty()){
            return;
        }

         Point p = location.get(0);
         for (int i = 1; i < location.size(); i++) {
             Point q = location.get(i);
             g.drawLine(p.x, p.y, q.x, q.y);
             p = q;
         }
    }

    public static void main(String[] args) throws Exception {

        InetAddress SERVERIP = InetAddress.getLocalHost();

        Runnable runnable = new Runnable() {
            @Override
            public void run() {

                JFrame frame = new JFrame("Drawing with friends");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new CanvasFrame(), BorderLayout.CENTER);

                JTextArea IPadress = new JTextArea(1,20);
                IPadress.setEditable(false);
                IPadress.append("DEVICE IP: " + SERVERIP.getHostAddress());
                frame.add(IPadress, BorderLayout.SOUTH);

                frame.setSize(new Dimension(800,600));
                frame.setLocationRelativeTo(null);
                frame.setResizable(false);
                frame.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(runnable);
    }
}

0 个答案:

没有答案