进程之间的通信:
进程是指运行中的程序,进程的任务就是执行程序中的代码,如下面程序EchoPlayer类是一个独立的java程序,他可以在任意一条安装了JDK的主机上运行。EchoPlayer类不断读取用户从控制台输入的任意字符串xxx,然后输出echo:XXX。如果用户输入的字符串为:“bye”,就结束程序。
EchoPlayer.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class EchoPlayer {
public static void main(String[] args) throws IOException {
new EchoPlayer1().talk();
}
}
class EchoPlayer1{
public String echo(String msg){
return "echo:"+msg;
}
public void talk() throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String msg=null;
while((msg=br.readLine())!=null){
System.out.println(echo(msg));
if(msg.equals("bye")){
break;
}
}
}
}
运行EchoPlayer.java,就启动了一个JVM(java virtual machine)进程,该进程执行EchoPlayer类的main()方法。
EchoPlayer类的echo(String msg)方法负责生成响应结果。如果需要把生成响应结果的功能移动到一个远程主机上,那么上面的EchoPlayer类就无法满足这一需求。在这种情况下,要创建两个程序:客户程序EchoClient和服务器程序EchoServer。
EchoClient程序有两个作用:
1、与用户交互,从本地控制台获得标准输入流和标准输出流;
2、与远程的EchoServer通信,想EchoServer发送用户输入的字符串,接收EchoServer返回的响应结果,再把响应结果写到标准输出流。