zoukankan      html  css  js  c++  java
  • 建立简单的服务器端程序 分类: B1_JAVA 2013-10-08 21:53 503人阅读 评论(0) 收藏

      参考自core java

    package com.lujinhong.corejava;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoServer {
    
    	public static void main(String[] args) {
    		
    		try {
    			ServerSocket serverSocket = new ServerSocket(8019);
    			Socket socket = serverSocket.accept();
    			
    			InputStream is = socket.getInputStream();
    			OutputStream os = socket.getOutputStream();
    			
    			PrintWriter pw = new PrintWriter(os);
    			Scanner sc = new Scanner(is);
    			
    			Boolean flag = false;
    			String line = null;
    			String exitString = "bye";
    			
    			while(!flag && sc.hasNextLine()){
    				pw.println("Hello, type " + exitString + " to exit!");
    				line = sc.nextLine();
    				if(line.trim().equals(exitString)){
    					flag = true;
    				}else{
    					pw.println("Hello, "+line);
    				}
    			}
    			pw.close();
    			sc.close();
    			serverSocket.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    使用线程实现多个客户端同时访问:

    package com.lujinhong.corejava;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class MultiEchoServer {
    
    	public static void main(String[] args) {
    		try {
    			ServerSocket serverSocket = new ServerSocket(8189);
    			while (true) {
    				Socket socket = serverSocket.accept();
    
    				Runnable r = new ThreadedEchoHandler(socket);
    				Thread thread = new Thread(r);
    				thread.start();
    			}
    
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    
    }
    
    class ThreadedEchoHandler implements Runnable {
    
    	private Socket s = null;
    
    	public ThreadedEchoHandler(Socket socket) {
    		s = socket;
    	}
    
    	@Override
    	public void run() {
    		try {
    			InputStream is = s.getInputStream();
    			OutputStream os = s.getOutputStream();
    
    			PrintWriter pw = new PrintWriter(os);
    			Scanner sc = new Scanner(is);
    
    			Boolean flag = false;
    			String line = null;
    			String exitString = "bye";
    
    			while (!flag && sc.hasNextLine()) {
    				pw.println("Hello, type " + exitString + " to exit!");
    				line = sc.nextLine();
    				if (line.trim().equals(exitString)) {
    					flag = true;
    				} else {
    					pw.println("Hello, " + line);
    				}
    			}
    			sc.close();
    			pw.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }


    In this program, we spawn a separate thread for each connection. This approach is not satisfactory for highperformance servers. You can achieve greater server throughput by using features of the java.nio package. See www.ibm.com/developerworks/java/library/j-javaio for more information.

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    欢迎转载,请注明来自: www.lujinhong.com www.cnblogs.com/lujinhong2
  • 相关阅读:
    uvalive 3971 Assemble
    poj 1064 Cable master
    1130mysql explain中的type列含义和extra列的含义
    1128ORDER BY的原理
    1125Sending data
    1125MySQL Sending data导致查询很慢的问题详细分析
    1125mysqbinlog日志
    1122Shell脚本之利用mysqldump备份MySQL数据库
    1122从业务优化MYSQL
    1122MySQL性能优化之 Nested Loop Join和Block Nested-Loop Join(BNL)
  • 原文地址:https://www.cnblogs.com/lujinhong2/p/4637388.html
Copyright © 2011-2022 走看看