对于一种简单的通信形式,您可以使用 java.net.socket 在两个 jar 文件之间进行通信。这将使您获得所需的“乒乓”效果。
在 programA 中,您将设置服务器套接字并监听客户端连接
try {
serverSocket = new ServerSocket(4567);
}
catch (IOException e) {
System.out.println("Could not listen on port: 4567");
System.exit(-1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
}
catch (IOException e) {
System.out.println("Accept failed: 4567");
System.exit(-1);
}
如果服务器能够接受客户端,则 clientSocket 对象会将远程地址和远程端口设置为客户端的。
服务器与客户端成功建立连接后,使用以下代码与客户端(程序B)进行通信:
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
out.println("ping");
while ((inputLine = in.readLine()) != null) {
System.out.println("Program B says: " + inputLine);
out.println("server: " + inputLine);
if (inputLine.equals("quit"))
break;
}
现在您已经为程序 A 编写了能够与程序 B 对话的逻辑,您还需要创建能够与之交互的客户端。
程序B:
Socket socket = new Socket("programb", 4567);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader sysIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
while ((fromServer = in.readLine()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("server: quit"))
break;
fromUser = sysIn.readLine();
if (fromUser != null) {
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
}
然后为了良好的做法关闭流
out.close();
in.close();
sysIn.close()
socket.close();
这应该给你一个能够在两者之间交谈的基础,你可能需要在服务器上实现某种形式的协议(处理消息的东西),以便它输出一些有用的东西
参考:http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html