zoukankan      html  css  js  c++  java
  • java ServerSocket

    public Socket accept() //等待连接,该方法阻塞
    public void close() //关闭服务器套接字

    ServerSocket只连一次的程序

    /* this is serversocket */
    package test;
    
    import java.io.*;
    import java.net.*;
    
    class ServerOne extends Thread{
            private Socket socket;
            private BufferedReader in;
            private PrintWriter out;
            public ServerOne(Socket s) throws IOException{
                    socket = s;
                    in =
                      new BufferedReader(
                            new InputStreamReader(
                                    socket.getInputStream(),"UTF-8"));
                    //Enbale auto-flush;
                    out =
                      new PrintWriter(
                            new BufferedWriter(
                                    new OutputStreamWriter(
                                            socket.getOutputStream(),"UTF-8")),true);
                    start();
            }
            public void run(){
            try{
                    while(true){
                            String str = in.readLine();
                            if(str.equals("END")) break;
                            System.out.println("Echoing:" + socket.getInetAddress());
                            out.println("str");
                            }
               }catch(IOException e){
               }finally{
                    try{
                            socket.close();
                    }catch(IOException e){
                    }
               }
            }
    }
    public class MultiServer{
            static final int PORT = 5000;
            public static void main(String[] args)throws IOException{
                    ServerSocket s = new ServerSocket(PORT);
                    System.out.println("Server Started");
                    try{
                      while(true){
                            Socket socket = s.accept();
                            try{
                              new ServerOne(socket);
                            }catch(IOException e){
                             socket.close();
                            }
                       }
                    }finally{
                      s.close();
                    }
    
            }}

    多服务端程序实例

    /* this is serversocket */
    package socket;
    
    import java.io.*;
    import java.net.*;
    
    class ServerOne extends Thread{
            private Socket socket;
            private BufferedReader in;
            private PrintWriter out;
            public ServerOne(Socket s) throws IOException{
                    socket = s;
                    in =
                      new BufferedReader(
                            new InputStreamReader(
                                    socket.getInputStream(),"UTF-8"));
                    //Enbale auto-flush;
                    out =
                      new PrintWriter(
                            new BufferedWriter(
                                    new OutputStreamWriter(
                                            socket.getOutputStream(),"UTF-8")),true);
                    start();
            }
            public void run(){
            try{
                    while(true){
                            String str = in.readLine();
                            if(str.equals("END")) break;
                            System.out.println("Echoing:" + socket.getInetAddress() + socket.getPort());
                            out.println(str);
                            }
               }catch(IOException e){
               }finally{
                    try{
                            socket.close();
                    }catch(IOException e){
                    }
               }
            }
    }
    public class MultiServer{
            static final int PORT = 5000;
            public static void main(String[] args)throws IOException{
                    ServerSocket s = new ServerSocket(PORT);
                    System.out.println("Server Started");
                    try{
                      while(true){
                            Socket socket = s.accept();
                            try{
                              new ServerOne(socket);
                            }catch(IOException e){
                             socket.close();
                            }
                       }
                    }finally{
                      s.close();
                    }
             }
    }

     规定线程个数的服务器

    //: MultiJabberClient.java 
    // Client that tests the MultiJabberServer 
    // by starting up multiple clients. 
    import java.net.*; 
    import java.io.*; 
     
    class JabberClientThread extends Thread { 
      private Socket socket; 
      private BufferedReader in; 
      private PrintWriter out; 
      private static int counter = 0; 
      private int id = counter++; 
      private static int threadcount = 0; 
      public static int threadCount() {  
        return threadcount;  
      } 
      public JabberClientThread(InetAddress addr) { 
        System.out.println("Making client " + id); 
        threadcount++; 
        try { 
          socket =  
            new Socket(addr, MultiJabberServer.PORT); 
        } catch(IOException e) { 
          // If the creation of the socket fails,  
          // nothing needs to be cleaned up. 
        } 
        try {     
          in =  
            new BufferedReader( 
              new InputStreamReader( 
                socket.getInputStream())); 
           // Enable auto-flush: 
          out =  
            new PrintWriter( 
              new BufferedWriter( 
                new OutputStreamWriter( 
                  socket.getOutputStream())), true); 
          start(); 
        } catch(IOException e) { 
          // The socket should be closed on any  
          // failures other than the socket  
          // constructor: 
          try { 
            socket.close(); 
          } catch(IOException e2) {} 
        } 
        // Otherwise the socket will be closed by 
        // the run() method of the thread. 
      } 
      public void run() { 
        try { 
          for(int i = 0; i < 25; i++) { 
            out.println("Client " + id + ": " + i); 
            String str = in.readLine(); 
            System.out.println(str); 
          } 
          out.println("END"); 
        } catch(IOException e) { 
        } finally { 
          // Always close it: 
          try { 
            socket.close(); 
          } catch(IOException e) {} 
          threadcount--; // Ending this thread 
        } 
      } 
    } 
     
    public class MultiJabberClient { 
      static final int MAX_THREADS = 40; 
      public static void main(String[] args)  
          throws IOException, InterruptedException { 
        InetAddress addr =  
          InetAddress.getByName(null); 
        while(true) { 
          if(JabberClientThread.threadCount()  
             < MAX_THREADS) 
            new JabberClientThread(addr); 
          Thread.currentThread().sleep(100); 
        } 
      } 
    } ///:~ 
  • 相关阅读:
    文件下载
    字符串截取
    GAMES101 作业1
    GAMES101 作业0
    常见的企业管理系统有哪些
    Spring---AoP(面向切面编程)原理学习笔记【全】
    什么是OOP(Object Oriented Programming)面向对象编程
    Spring框架之控制反转IoC(Inversion of Control)的理解
    Typora编辑器MarkDown语法
    国民经济行业分类与代码(GB/T 4754-2017、GB/T 4754-2011、GB/T 4754-2002)
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10504030.html
Copyright © 2011-2022 走看看