3 回答

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;
}
});
}
}

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)容易。
添加回答
舉報(bào)