zoukankan      html  css  js  c++  java
  • Java网络编程一

    1.InetAddress的应用

    import java.util.List;
    import java.math.BigDecimal;
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.LinkedList;
    import java.util.Scanner;
    import java.util.Set;
    import java.util.Stack;
    
    import javax.naming.spi.DirStateFactory.Result;
    
    import org.omg.PortableInterceptor.DISCARDING;
    
    import java.util.Map;
    import java.util.Queue;
    /**
     * InetAddress类
     * @author 16114
     *
     */
    public class Main{
        public static void main(String[] args) {
            try {
                InetAddress address = InetAddress.getLocalHost();
                System.out.println("计算机名:" + address.getHostName());
                System.out.println("IP地址:" + address.getHostAddress());
                byte[] bytes = address.getAddress();
                System.out.println("字节数组形式的IP:" + Arrays.toString(bytes));
                System.out.println(address);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            try {
                InetAddress address2 = InetAddress.getByName("Roni");
                System.out.println(address2.getHostName());
                System.out.println(address2.getHostAddress());
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            
            
        }
    }

     2.URL

    import java.util.List;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.math.BigDecimal;
    import java.net.InetAddress;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.LinkedList;
    import java.util.Scanner;
    import java.util.Set;
    import java.util.Stack;
    
    import javax.naming.spi.DirStateFactory.Result;
    
    import org.omg.PortableInterceptor.DISCARDING;
    
    import java.util.Map;
    import java.util.Queue;
    /**
     * URL类
     * @author 16114
     *
     */
    public class Main{
        public static void main(String[] args) {
            
            try {
                URL url = new URL("http://www.baidu.com");
                try {
                    InputStream is = url.openStream();
                    InputStreamReader isr = new InputStreamReader(is,"utf-8");
                    BufferedReader br = new BufferedReader(isr);
                    String data = br.readLine();
                    while(data!=null) {
                        System.out.println(data);
                        data=br.readLine();
                    }
                    br.close();
                    isr.close();
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    
                }
                
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            
        }
    }

     3.客户端向服务器端的通信

    Server

    package com.zrl.thread;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    /**
     * 基于TCP协议的Socket协议
     * 服务端
     * @author 16114
     *
     */
    public class Server {
        public static void main(String[] args) {
            //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口
            try {
                ServerSocket serverSocket = new  ServerSocket(8888);
                //2.调用accept()方法开始监听,等待客户端的连接
                System.out.println("***服务器即将启动,等待客户端的链接***");
                Socket socket = serverSocket.accept();
                //3.获取输入流,并读取客户端信息
                InputStream is = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String info = null;
                while((info=br.readLine())!=null) {
                    System.out.println("我是服务器,客户端说:" + info);
                }
                socket.shutdownInput();
                //4.关闭相关资源
                br.close();
                isr.close();
                is.close();
                socket.close();
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    Client

    package com.zrl.thread;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class Client {
        public static void main(String[] args) {
            //1.创建客户端Socket,指定服务器端地址和端口
            Socket socket;
            try {
                socket = new Socket("localhost", 8888);
                //2.获取输出流,向服务器发送消息
                OutputStream os = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
                pw.write("用户名:admin;密码:123");
                pw.flush();
                socket.shutdownInput();
                //3.关闭资源
                pw.close();
                os.close();
                socket.close();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }

     一个服务端,多个客户端

    Server.java

    package com.zrl.thread;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    /**
     * 基于TCP协议的Socket协议
     * 服务端
     * @author 16114
     *
     */
    
    public class Server {
        public static void main(String[] args) {
            //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口
            try {
                ServerSocket serverSocket = new  ServerSocket(8888);
                //2.调用accept()方法开始监听,等待客户端的连接
                System.out.println("***服务器即将启动,等待客户端的链接***");
                Socket socket = null;
                //记录客户端的数量
                int cnt = 0;
                //循环监听等待客户端的连接
                while(true) {
                    //调用accept()方法开始监听,等待客户端的连接
                    socket = serverSocket.accept();
                    //创建一个新线程
                    ServerThread serverThread = new ServerThread(socket);
                    //启动线程
                    serverThread.start();
                    cnt++;
                    System.out.println("客户端的数量:" + cnt);
                    InetAddress address = socket.getInetAddress();
                    System.out.println("当前客户端的IP:" + address.getHostAddress());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    Client.java

    package com.zrl.thread;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class Client {
        public static void main(String[] args) {
            //1.创建客户端Socket,指定服务器端地址和端口
            Socket socket;
            try {
                socket = new Socket("localhost", 8888);
                //2.获取输出流,向服务器发送消息
                OutputStream os = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
                pw.write("用户名:admin; 密码:456");
                pw.flush();
                socket.shutdownOutput();
                //3.获取输入流并且读取服务器端的响应信息
                InputStream is = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String info = null;
                while((info=br.readLine())!=null) {
                    System.out.println("我是客户端,服务端说:" + info);
                }
                //4.关闭资源
                br.close();
                is.close();
                pw.close();
                os.close();
                socket.close();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }

    ServerThread.java

    package com.zrl.thread;
    /**
     * 服务器端线程处理类
     * @author 16114
     *
     */
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    public class ServerThread extends Thread {
        //和本线程相关的Socket
        Socket socket = null;
        public ServerThread(Socket socket) {
            this.socket = socket;
        }
        //线程执行的操作,响应客户端的请求
        @Override
        public void run() {
            //获取输入流,并读取客户端信息
            InputStream is=null;
            InputStreamReader isr=null;
            BufferedReader br=null;
            OutputStream os =null;
            PrintWriter pw = null;
            try {
                is = socket.getInputStream();
                isr = new InputStreamReader(is);
                br = new BufferedReader(isr);
                String info = null;
                while((info=br.readLine())!=null) {
                    System.out.println("我是服务器,客户端说:" + info);
                }
                socket.shutdownInput();
                //获取输出流,响应客户端的请求
                os = socket.getOutputStream();
                pw = new PrintWriter(os); //包装为打印流
                pw.write("欢迎您!");
                pw.flush(); //调用flush将缓冲输出
                
            } catch (IOException e) {
                e.printStackTrace();
            }finally {//关闭相关资源
                    try {
                        if(pw!=null) pw.close();
                        if(os!=null) os.close();
                        if(br!=null) br.close();
                        if(isr!=null) isr.close();
                        if(is!=null) is.close();
                        if(socket!=null) socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
              }
        }
    }
  • 相关阅读:
    js实现深拷贝的5种方式
    react中Context的使用
    react中link参数传递以及url乱码解决
    js中forEach结束循环
    javaScript函数和方法的区别
    将逻辑运算字符串转化为逻辑运算进行运算
    redux的使用流程
    react类型检查
    for..in,for..of 和forEach的区别
    JavaScript基础知识(JSON、Function对象、原型、引用类型)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/9788983.html
Copyright © 2011-2022 走看看