美文网首页
Java之 网络编程

Java之 网络编程

作者: 测试员 | 来源:发表于2019-08-19 12:45 被阅读0次

简单知识

IP

每台设备在网络中的唯一标识

端口

每个程序上在设备上的唯一标识
·MySQL:3306
·Oracle:1521
·Web:80
·Tomcat:8080
·QQ:4000

协议

UDP
面向无连接,数据不安全,速度快;
TCP(三次握手):面向连接,数据安全,速度慢;

案例

案例一 TCP发信息
    class TcpClint1 {
        public static void main(String[] args) throws IOException {
            //1.创建一个Socket客户端对象,绑定IP和端口
            Socket socket = new Socket("localhost", 8998);
    
            //2.获取网络字节输出流OutputStream对象
            OutputStream out = socket.getOutputStream();
    
            //3.给服务器发送数据
            out.write("哈漏哇!妮能煞累呀?".getBytes());
    
            //4.获取网络字节输入流对象InputStream对象
            InputStream in = socket.getInputStream();
    
            //5.读取服务器回写的数据
            byte[] arr = new byte[1024];
            int len = in.read(arr);
            System.out.println(new String(arr,0,len));
    
            //6.释放资源
            socket.close();
        }
    }
    
    /**
    * TCP服务器端:接收客户端请求,给客户端回写数据
    */
    class TcpServer {
        public static void main(String[] args) throws IOException {
            // 1.创建服务端Socket对象并绑定客户端端口
            ServerSocket serverSocket = new ServerSocket(8998);
    
            // 2.获取客户端 socket 对象
            Socket accept = serverSocket.accept();
    
            // 3.获取网络字节输入流对象InputStream对象
            InputStream in = accept.getInputStream();
    
            // 4.读取发送过来的数据
            byte[] arr = new byte[1024];
            int len = in.read(arr);
            System.out.println(new String(arr,0,len));
            // 5.获取网络字节输出流OutputStream对象
            OutputStream out = accept.getOutputStream();
    
            // 6.给客户端回写信息
            out.write("俺听不懂方言,谢谢!".getBytes());
            out.close();
            in.close();
        }
    }
案例二 UDP发信息
    class UdpClint{
        public static void main(String[] args) throws IOException {
            int port = 8998;
    
            //发送内容
            String str = "俺是个没有感情的粉刷匠!";
            //创建接收/发送器对象
            DatagramSocket socket = new DatagramSocket();
            //创建装载对象
            DatagramPacket packet = new DatagramPacket(
                    str.getBytes(),
                    str.getBytes().length,
                    InetAddress.getByName("localhost"),
                    port);
            //发送
            socket.send(packet);
            //socket.close();
    
        }
    }
    
    
    class UdpServer{
        public static void main(String[] args) throws IOException  {
            int port = 8998;
    
            //创建接收/发送对象并绑定接收端口
            DatagramSocket socket = new DatagramSocket(port);
    
            //创建加载对象(构造用于接收长度为的数据包的数据包。长度参数必须小于或等于buf.length。)
            DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
    
            //接收信息
            socket.receive(packet);
    
            //打印出来
            int len = 0;
            byte[] arr = packet.getData();
            System.out.println(new String(arr,0,len));
            //socket.close();
        }
    }
案例三 TCP上传文件
    class TcpClint {
        public static void main(String[] args) throws IOException {
    
    //        要上传的文件
            String src = "like.gif";
    //        创建本地字节输入流
            FileInputStream fin = new FileInputStream(src);
    
            Socket socket = new Socket("127.0.0.1", 777);
    //**********************************上传*****************************************************
            OutputStream os = socket.getOutputStream();
    
            int len = 0;
            byte[] arr = new byte[1024];
            while ((len = fin.read(arr)) != -1) {
                os.write(arr, 0, len);
            }
    
        socket.shutdownOutput();
    //-------------------------------------下载服务器传过来的反馈数据---------------------------------
    /*
            InputStream in = socket.getInputStream();
            while ((len = in.read(arr)) != -1) {
                System.out.println(new String(arr, 0, len));
            }*/
            os.close();
            socket.close();
            fin.close();
        }
    }
    /**
    * 服务端代码:文件下载到服务器上
    */
    class TcpServershangchuan {
        public static void main(String[] args) throws IOException {
    //        存储路径
            String mdd = "C:\\Users\\ASUS\\Desktop\\";
    //        绑定端口
            ServerSocket serverSocket = new ServerSocket(777);
    //        获取接收对象
            Socket socket = serverSocket.accept();
    //        获取网络字节输入流
            InputStream in = socket.getInputStream();
    //        本地字节输出流把文件下载下来
            FileOutputStream fout = new FileOutputStream(mdd + "b.gif");
    
    //        IO操作
            int len = 0;
            byte[] arr = new byte[1024];
            while ((len = in.read(arr)) != -1) {
                fout.write(arr, 0, len);
            }
    
    //        返回给服务端一个信息可以不给
    //        socket.getOutputStream().write("上传成功".getBytes());
    
    //        资源释放
            fout.close();
            socket.close();
            serverSocket.close();
        }
    }

相关文章

网友评论

      本文标题:Java之 网络编程

      本文链接:https://www.haomeiwen.com/subject/lnsssctx.html