zoukankan      html  css  js  c++  java
  • java学习日记 网络编程

    1、编写服务器端程序

    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class HelloServer {
        public static void main(String[] args) throws Exception{
            ServerSocket server = new ServerSocket(9999); //所有服务器都必须有端口
            System.out.println("等待客户连接");
            Socket client = server.accept();
            PrintStream out = new PrintStream(client.getOutputStream());  //实例化打印流对象,输出信息
            out.println("hello world");
            out.close();
            client.close();
            server.close();
        }
    }

    2、编写客户端程序

    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class HelloServer {
        public static void main(String[] args) throws Exception{
            ServerSocket server = new ServerSocket(9999); //所有服务器都必须有端口
            System.out.println("等待客户连接");
            Socket client = server.accept();
            PrintStream out = new PrintStream(client.getOutputStream());  //实例化打印流对象,输出信息
            out.println("hello world");
            out.close();
            client.close();
            server.close();
        }
    }

    将客户端程序拷贝到d盘,并将第一行的导入包删除,在命令窗口执行。

     3、Echo程序

    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoServer {
        public static void main(String[] args) throws Exception {
            ServerSocket server = new ServerSocket(8888);
            Socket client = server.accept();  //等待连接
            //得到客户端输入数据以及向客户端输出数据的对象
            Scanner scanner = new Scanner(client.getInputStream());
            PrintStream out = new PrintStream(client.getOutputStream());
            boolean flag = true;
            while (flag){
                if (scanner.hasNext()){
                    String str = scanner.next().trim();
                    if (str.equalsIgnoreCase("byebye")){
                        flag=false;
                    }else {
                        out.println("Echo:"+str);
                    }
                }
            }
            client.close();
            server.close();
        }
    }

    客户端:

    import java.io.PrintStream;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoClient {
        public static void main(String[] args) throws Exception{
            Socket client = new Socket("localhost",8888);
            Scanner input = new Scanner(System.in);  //键盘输入数据
            Scanner scanner = new Scanner(client.getInputStream());
            input.useDelimiter("
    ");
            scanner.useDelimiter("
    ");  //换行为分隔符
            PrintStream out = new PrintStream(client.getOutputStream());
            boolean flag =true;
            while (flag){
                System.out.println("输入信息:");
                if (input.hasNext()){
                    String str = input.next().trim();
                    out.println(str);
                    if ("byebye".equalsIgnoreCase(str)){
                        flag = false;
                    }
                    if (scanner.hasNext()){
                        System.out.println(scanner.next());
                    }
                }
            }
            client.close();
        }
    }

    4、EchoThread

    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    class EchoThread implements Runnable{
        private Socket client = null;
        public EchoThread(Socket client){
            this.client = client;
        }
        @Override
        public void run() {
           try{
               //得到客户端输入数据以及向客户端输出数据的对象
               Scanner scanner = new Scanner(client.getInputStream());
               PrintStream out = new PrintStream(client.getOutputStream());
               boolean flag = true;
               while (flag){
                   if (scanner.hasNext()){
                       String str = scanner.next().trim();
                       if (str.equalsIgnoreCase("byebye")){
                           out.println("***关闭***下次再回***");
                           flag=false;
                       }else {
                           out.println("Echo:"+str);
                       }
                   }
               }
               client.close();
    
           }catch (Exception e){
               System.err.println(e);
           }
    
        }
    }
    public class EchoServer {
        public static void main(String[] args) throws Exception {
            ServerSocket server = new ServerSocket(8888);
            boolean flag =true;
            while (flag){
                Socket client = server.accept();  //等待连接
                new Thread(new EchoThread(client)).start();
            }
        }
    }
  • 相关阅读:
    二分查找 找到了返回位置 没找到返回应该插入的位置
    前端知识结构
    RequireJS
    Java内部类——成员内部类
    Java笔记
    Java单例模式
    Java与C#的语法区别(不断更新中...)
    进制转换
    查找算法——折半查找
    排序算法——冒泡排序
  • 原文地址:https://www.cnblogs.com/cathycheng/p/13225296.html
Copyright © 2011-2022 走看看