zoukankan      html  css  js  c++  java
  • Client(客户端) / Server(服务端) 程序【Socket编程3】

    1. 客户端程序

    import java.io.*;
    
    import java.net.*;
    
    public class Client {
    
      public static void main(String args[]) {
    
         try{
    
           Socket socket=new Socket("127.0.0.1",4700);
    
           //向本机的4700端口发出客户请求
    
           BufferedReader in=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=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); //出错,则打印出错信息
    
          }
    
      }
    
    }    
    Client

    2. 服务器端程序

          import java.io.*;
    
      import java.net.*;
    
      import java.applet.Applet;
    
      public class TalkServer{
    
        public static void main(String args[]) {
    
                          ServerSocket server=null;
                          Socket socket=null;
                          String line;
    
          try{
    
              //创建一个ServerSocket在端口4700监听客户请求
                           server=new ServerSocket(4700);
    
                           //使用accept()阻塞等待客户请求,有客户
             //请求到来则产生一个Socket对象,并继续执行
    
             socket=server.accept();
            
                           //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
                      //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os=newPrintWriter(socket.getOutputStream());
    
                            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
    
                            //在标准输出上打印从客户端读入的字符串
            System.out.println("Client:"+is.readLine());
    
            //从标准输入读入一字符串
            line=sin.readLine();
    
    
            //如果该字符串为 "bye",则停止循环
    
            while(!line.equals("bye")){
    
              //向客户端输出该字符串
              os.println(line);
    
              //刷新输出流,使Client马上收到该字符串
              os.flush();
    
    
              //在系统标准输出上打印读入的字符串
              System.out.println("Server:"+line);
    
              //从Client读入一字符串,并打印到标准输出上
              System.out.println("Client:"+is.readLine());
    
              //从系统标准输入读入一字符串
              line=sin.readLine();
    
            }  //继续循环
    
          }catch(Exception e){
    
            System.out.println("Error:"+e);
    
            //出错,打印出错信息
    
          }finally{
                            os.close(); //关闭Socket输出流
    
            is.close(); //关闭Socket输入流
    
            socket.close(); //关闭Socket
    
            server.close(); //关闭ServerSocket
                      }
    
        }
    
      }                                     
    Server

    支持多客户的client/server程序

      前面的Client/Server程序只能实现Server和一个客户的对话。在实际应用中,往往是在服务器上运行一个永久的程序,它可以接收来自其他多个客户端的请求,提供相应的服务。为了实现在服务器方给多个客户提供服务的功能,需要对上 面的程序进行改造,利用多线程实现多客户机制。服务器总是在指定的端口上监听是否有客户请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响 应该客户的请求,而服务器本身在启动完线程之后马上又进入监听状态,等待下一个客户的到来。

  • 相关阅读:
    【PHP】最详细PHP从入门到精通(二)——PHP中的函数
    利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动
    JavaScript面向对象编程—this详解
    利用Hadoop streaming 进行词频统计
    Java 平时作业七
    Java 平时作业六
    Java 平时作业五
    Java 平时作业四
    Java 平时作业三
    JAVA 平时作业二
  • 原文地址:https://www.cnblogs.com/leelee/p/6843029.html
Copyright © 2011-2022 走看看