java server编程_Client/Server程序设计-Java网络编程

下面我们给出一个用Socket实现的客户和服务器交互的典型的C/S结构的演示程序,读者通过仔细阅读该程序,会对前面所讨论的各个概念有更深刻的认识。程序的意义请参考注释。1. 客户端程序  import java.io.*;  import java.net.*;  public class TalkClient {    public static void main(String args[]) {      try{        Socket socket=new Socket("127.0.0.1",4700);        //向本机的4700端口发出客户请求        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));        //由系统标准输入设备构造BufferedReader对象        PrintWriter os=new PrintWriter(socket.getOutputStream());        //由Socket对象得到输出流,并构造PrintWriter对象        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));        //由Socket对象得到输入流,并构造相应的BufferedReader对象        String readline;        readline=sin.readLine(); //从系统标准输入读入一字符串        while(!readline.equals("bye")){        //若从标准输入读入的字符串为 "bye"则停止循环          os.println(readline);          //将从系统标准输入读入的字符串输出到Server          os.flush();          //刷新输出流,使Server马上收到该字符串          System.out.println("Client:"+readline);          //在系统标准输出上打印读入的字符串          System.out.println("Server:"+is.readLine());          //从Server读入一字符串,并打印到标准输出上          readline=sin.readLine(); //从系统标准输入读入一字符串        } //继续循环        os.close(); //关闭Socket输出流        is.close(); //关闭Socket输入流        socket.close(); //关闭Socket      }catch(Exception e) {        System.out.println("Error"+e); //出错,则打印出错信息      }  }} 2. 服务器端程序  import java.io.*;  import java.net.*;  import java.applet.Applet;  public class TalkServer{    public static void main(String args[]) {      try{        ServerSocket server=null;        try{          server=new ServerSocket(4700);        //创建一个ServerSocket在端口4700监听客户请求        }catch(Exception e) {          System.out.println("can not listen to:"+e);        //出错,打印出错信息        }        Socket socket=null;        try{          socket=server.accept();          //使用accept()阻塞等待客户请求,有客户          //请求到来则产生一个Socket对象,并继续执行        }catch(Exception e) {          System.out.println("Error."+e);          //出错,打印出错信息        }        String line;        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));         //由Socket对象得到输入流,并构造相应的BufferedReader对象        PrintWriter os=newPrintWriter(socket.getOutputStream());         //由Socket对象得到输出流,并构造PrintWriter对象        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));         //由系统标准输入设备构造BufferedReader对象        System.out.println("Client:"+is.readLine());        //在标准输出上打印从客户端读入的字符串        line=sin.readLine();        //从标准输入读入一字符串        while(!line.equals("bye")){        //如果该字符串为 "bye",则停止循环          os.println(line);          //向客户端输出该字符串          os.flush();          //刷新输出流,使Client马上收到该字符串          System.out.println("Server:"+line);          //在系统标准输出上打印读入的字符串          System.out.println("Client:"+is.readLine());          //从Client读入一字符串,并打印到标准输出上          line=sin.readLine();          //从系统标准输入读入一字符串        }  //继续循环        os.close(); //关闭Socket输出流        is.close(); //关闭Socket输入流        socket.close(); //关闭Socket        server.close(); //关闭ServerSocket      }catch(Exception e){        System.out.println("Error:"+e);        //出错,打印出错信息      }    }  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值