java网络编程

来源:互联网 发布:linux jar 输出 编辑:程序博客网 时间:2024/06/07 10:40

一个回显从标准输入的程序

package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test {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("byr"))break;}}public static void main(String[] args)throws IOException{new test().talk();}}

文中在java虚拟机中启动了test进程,控制台与进程通信。



将上面的例子升级

import java.io.*;import java.net.*;public class EchoServer {  private int port=8000;  private ServerSocket serverSocket;  public EchoServer() throws IOException {    serverSocket = new ServerSocket(port);    System.out.println("服务器启动");  }  public String echo(String msg) {    return "echo:" + msg;  }  private PrintWriter getWriter(Socket socket)throws IOException{    OutputStream socketOut = socket.getOutputStream();    return new PrintWriter(socketOut,true);  }  private BufferedReader getReader(Socket socket)throws IOException{    InputStream socketIn = socket.getInputStream();    return new BufferedReader(new InputStreamReader(socketIn));  }  public void service() {    while (true) {      Socket socket=null;      try {        socket = serverSocket.accept();  //等待客户连接        System.out.println("New connection accepted "                         +socket.getInetAddress() + ":" +socket.getPort());        BufferedReader br =getReader(socket);        PrintWriter pw = getWriter(socket);        String msg = null;        while ((msg = br.readLine()) != null) {          System.out.println(msg);           pw.println(echo(msg));          if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信            break;        }      }catch (IOException e) {         e.printStackTrace();      }finally {         try{           if(socket!=null)socket.close();  //断开连接         }catch (IOException e) {e.printStackTrace();}      }    }  }  public static void main(String args[])throws IOException {    new EchoServer().service();  }}

定义一个服务器,来回显客户的数据

0 0