• JAVA学习-----网络编程


    JAVA学习-----网络编程
    ***
    一、InetAddress:多个静态方法
    • 1.getLocalHost:本机
    • 2.getByName:根据域名DNS|IP地址-->IP

    *两个成员方法

    • 1.getHostAddress:返回地址
    • 2.getHostName:返回计算机名

    二、端口:
    * 1.区分软件 * 2.2个字节 0-65535 UDP TCP * 3.同一个协议端口不能冲突 * 4.定义端口越大越好 * InetSocketAddress: * 1.构造器 * new InetSocketAddress(地址|域名,端口); * 2.方法 * getAddress() * getPort() * getHostName() * ***
    三、URL:
    统一资源定位器,互联网三大基石之一(html http),区分资源 1.协议 2.域名,计算机 3.端口:默认80 4.请求资源 ***
    四、UDP

    UdpClient: 发送端

    1、使用DatagramSocket指定端口 创建发送端

    DatagramSocket client=new DatagramSocket(888);
    

    2、准备数据 一定转成字节数组

    byte[] datas=IOUtils.fileToByteArray("1.png");
    

    3、封装成DatagramPacket包裹 ,需要制定目的地

    DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new  InetSocketAddress("localhost",999) ) ;
    

    4、发送包裹send(DatagramPacket p)

    client.send(packet);
    

    5、释放资源

    client.close();  
    

    UdpServer:接收端

    1、使用DatagramSocket指定端口 创建接收端

    DatagramSocket server=new DatagramSocket(999);
    

    2、准备容器 封装成DatagramPacket包裹

    byte[] container=new byte[1024*60];
    DatagramPacket packet=new DatagramPacket(container,0,container.length ) ;
    

    3、阻塞式接收包裹receive(DatagramPacket p)

    server.receive(packet);
    

    4、分析数据byte[] getData();getLength()

    byte[] datas=packet.getData();
    int len=packet.getLength();
    System.out.println(new String(datas,0,len));
    

    5、释放资源

    server.close();  
    

    **要实现同时收发,只要引入线程,即使用面向对象封装(属性,对象,构造器):implements Runnable+定义+构造器+重写run。


    五、TCP
    (1)创建客户端:

    1、建立连接:使用Socket创建客户端+服务的地址和端口

    Socket client=new Socket("localhost",8888);
    

    2、操作:输入输出流操作

    DataOutputStream dos=new DataOutputStream(client.getOutputStream());
    String data="hello";
    dos.writeUTF(data);
    dos.flush();
    

    3、释放资源

    dos.close();
    client.close();  
    

    (2)创建服务器:

    1、指定端口:使用ServerSocket创建服务器

    ServerSocket server=new ServerSocket(8888);
    

    2、阻塞式等待连接 accept

    Socket client =server.accept();
    

    3、操作:输入输出流操作

    DataInputStream dis=new DataInputStream(client.getInputStream());
    String data=dis.readUTF();
    System.out.println(data);
    

    4、释放资源

    dis.close();
    client.close();
    server.close();  
    

    多个用户端,封装+线程=完美

  • 相关阅读:
    详解 注解
    线段树分治
    实用Trick
    CF932F(李超线段树+dp)
    CF24D Broken robot(高斯消元)
    LCT学习笔记
    [HNOI2008]GT考试
    [AHOI2009]中国象棋
    [APIO2012]派遣
    CF961G Partitions
  • 原文地址:https://www.cnblogs.com/CGJ-Coco/p/9843985.html
Copyright © 2020-2023  润新知