zoukankan      html  css  js  c++  java
  • UDP通信

    UDP是一种面向无连接的协议,在通信时发送端和接收端不用建立连接。

    构造方法创建DatagramPacket对象

    发送端一定要明确指出数据的目的地(ip地址和端口号)而接收端不需要明确知道数据的来源,只需要接收到数据即可。

    DatagramSocket()

    用于创建发送端的DatagramSocket对象

    DatagramSocket(int port)

    创建接收端的DatagramSocket对象

    * 发送端

     * 1,创建DatagramPacket对象,封装数据接收的地址和端口

     * 2,创建DatagramSocket对象

    * 3,调用DatagramSocket中的send方法,发送数据

     * 4关闭资源DatagramSocket

     

     * UDP接收端

     *

     * 1,创建DatagramSocket对象绑定端口号(要和发送端端口号一致)

     * 2,创建字节数组,接收发来的数据

     * 3,创建数据包对象DatagramPacket

     * 4,调用DatagramSocket对象方法receiveDatagramPacket dp)接收数据,数据放在数据包中

     * 5,拆包

     

     

    package com.oracle.demo02;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    
    import sun.print.resources.serviceui;
    
    //客户端
    public class TCPClient {
    
        public static void main(String[] args) throws IOException, IOException {
            Scanner sc=new Scanner(System.in);
            // 创建客户端对象,明确要连接的服务器所在的ip地址和端口号
            Socket socket=new Socket("127.0.0.1",9999);
            //获取字节输出流
            OutputStream fos=socket.getOutputStream();
            //向服务器写数据
            fos.write(sc.next().getBytes());
            
            //接收服务器响应
            //获取字节输入流
            InputStream fis=socket.getInputStream();
            byte[] bytes=new byte[1024];
            int len=fis.read(bytes);
            //获取ip地址
            String ip=socket.getInetAddress().getHostAddress();
            System.out.println("ip地址为:"+ip+",发送的内容为:"+new String(bytes,0,len));
            socket.close();
        }
    
    }

     

    package com.oracle.demo02;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    //服务器端
    public class TCPserver {
    
        public static void main(String[] args) throws IOException {
            Scanner sc=new Scanner(System.in);
            // 创建服务器对象,明确端口号
            ServerSocket server=new ServerSocket(9999);
            //和客户端创建联系
            Socket socket=server.accept();
            //获取字节输入流
            InputStream fis=socket.getInputStream(); 
            byte[] bytes=new byte[1024];
            int len=fis.read(bytes);
            //获取客户端ip
            String ip=socket.getInetAddress().getHostAddress();
            System.out.println("ip地址为:"+ip+",发送的内容为:"+new String(bytes,0,len));
            //回复客户端
            //获取字节输出流
            OutputStream fos=socket.getOutputStream();
            fos.write(sc.next().getBytes());
            //释放资源
            server.close();
            
        }
    
    }

     

  • 相关阅读:
    Java 类与类之间的调用
    File类中的list()和listFiles()方法
    关于GITLAB若干权限问题
    JAVA 判断一个字符串是不是一个合法的日期格式
    JAVA日期加减运算
    Java读写文件的几种方法
    在Coding.net创建项目开发
    IntelliJ IDEA 创建项目project和module的关系
    对xml文件的简单解析
    Intellij IDEA使用总结
  • 原文地址:https://www.cnblogs.com/longmingyeyu/p/12790700.html
Copyright © 2011-2022 走看看