第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

兩個(gè)單獨(dú)的Java桌面應(yīng)用程序之間的通信

兩個(gè)單獨(dú)的Java桌面應(yīng)用程序之間的通信

翻閱古今 2019-11-27 10:45:03
我正在尋找開發(fā)兩個(gè)單獨(dú)的(但相關(guān)的)Java桌面應(yīng)用程序。我希望一個(gè)應(yīng)用程序能夠觸發(fā)另一個(gè)應(yīng)用程序,傳遞可以進(jìn)行編輯和傳回的數(shù)據(jù),即通信將是兩種方式。如果另一個(gè)應(yīng)用程序已經(jīng)在運(yùn)行,我希望他們之間進(jìn)行交流,即我不想僅通過命令行傳遞參數(shù),等等。一般來說,為了達(dá)到這個(gè)目的,我應(yīng)該考慮哪些策略/技術(shù)?
查看完整描述

3 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

為了顯示讓兩個(gè)應(yīng)用程序相互通信有多么容易,請使用JGroups來查看此網(wǎng)絡(luò)剪貼板演示。只需啟動(dòng)兩個(gè)實(shí)例,然后開始將文件放入其中一個(gè)即可。第二個(gè)實(shí)例將立即顯示相同的文件。


import java.io.Serializable;

import java.awt.*;

import java.awt.datatransfer.*;

import javax.swing.*;

import org.jgroups.*;


public class JGroupsTest {


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

        final JFrame frame = new JFrame();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setVisible(true);

        frame.setSize(500, 300);

        final DefaultListModel listModel = new DefaultListModel();

        final JList panel = new JList(listModel);

        panel.setBackground(new Color(128, 0, 40));

        panel.setForeground(new Color(240, 240, 240));

        frame.add(panel);

        System.setProperty("java.net.preferIPv4Stack", "true");

        final JChannel channel = new JChannel("udp.xml");

        channel.connect("networkclipboard");

        channel.setReceiver(new ReceiverAdapter() {

            @Override

            public void viewAccepted(View newView) {

                frame.setTitle("Network Clipboard - " + channel.getLocalAddress());

            }


            @Override

            public void receive(Message msg) {

                listModel.addElement(msg.getObject());

            }

        });


        panel.setTransferHandler(new TransferHandler() {

            @Override

            public boolean importData(JComponent comp, Transferable t) {

                DataFlavor[] transferDataFlavors = t.getTransferDataFlavors();

                for (DataFlavor flavor : transferDataFlavors) {

                    try {

                        Object data = t.getTransferData(flavor);

                        if (data instanceof Serializable) {

                            Serializable serializable = (Serializable) data;

                            Message msg = new Message();

                            msg.setObject(serializable);

                            channel.send(msg);

                        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

                return super.importData(comp, t);

            }


            @Override

            public boolean canImport(TransferSupport support) {

                return true;

            }


            @Override

            public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {

                return true;

            }


        });

    }


}


查看完整回答
反對 回復(fù) 2019-11-27
?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

  • “企業(yè)”方式是在Java EE服務(wù)器或至少在Spring框架中運(yùn)行這些應(yīng)用程序。這也可能是過大的殺傷力。

  • 如果需要傳送一堆數(shù)據(jù),則RMI將執(zhí)行此操作。

  • 如果您不怕自己的協(xié)議,數(shù)據(jù)結(jié)構(gòu)和錯(cuò)誤處理,可以設(shè)置服務(wù)器和客戶端套接字并通過它們進(jìn)行通信。

  • 我認(rèn)為,通過公共目錄中的文件(設(shè)置您自己的協(xié)議誰寫或何時(shí)刪除文件)或通過共享數(shù)據(jù)庫進(jìn)行通信的選擇具有一定的吸引力。技術(shù)含量低,不是非???,但是非常簡單可靠。而且,從外部監(jiān)視“通信”也相當(dāng)容易。


查看完整回答
反對 回復(fù) 2019-11-27
  • 3 回答
  • 0 關(guān)注
  • 698 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號