小知识点:

    网络编程:主要解决计算机间数据传输
    不需要html页面可以达到数据传输:QQ,微信
    网页编程:继续Html页面基础上数据交互:OA,天猫。。。

    java方向:web方向,annrod常用Socket方式传输

    计算机网路:分布在不同地域的计算机通过外部设备传输数据

    网路通讯三要素:IP,端口号(哪个应用程序使用),协议

    IP地址分类:网路号,主机号;子网掩码是标明哪个是网络号
      A类地址:一个网络号+三个主机号 政府单元2^24个
      B类地址:2+2 事业单位(学校,银行)2^16
      C类地址:3+1 私人使用2^8

    InetAddress类(IP类)

    服务器集群:一个计算机访问百度,在对象的电信dns服务器中可能有多个,每个又有很多子服务器,后来的那么多服务器集合叫服务器集群

    端口号:0~2^16-1;0~1023:系统紧密绑定一些服务
        1024~65535:我们可以使用;1024是个分界点
    网络通讯的协议:
      UDP:不需要建立连接通讯
      TCP:需要建立连接的通讯

1.UDP
  什么时候数据可能丢失:
    a.带宽不足b.cpu不足
  用法:a.建DatagramSocket
      b.DatagramPacket封装数据为数据包(数据包大小64kb,该有的信息都有)
      c.发送数据:.send();;接收数据receive();
  例子:
    基本例子:
    发送端:
    DatagramSocket ds=new DatagramSocket();
    String content="你好,我是第一次使用udp!";
    //装载数据
    DatagramPacket dp=new DatagramPacket(content.getBytes(),content.getBytes().length,InetAddress.getLocalHost(),1025);
    //发送数据
    ds.send(dp);
    ds.close();

    接收端
    DatagramSocket sd=new DatagramSocket(1025);
    byte[] buffer=new byte[1024];
    DatagramPacket dp=new DatagramPacket(buffer,buffer.length);
      while(true){
        sd.receive(dp);
        System.out.println(new String(buffer,0,dp.getLength()));
        Thread.sleep(1000);
      }

    群聊例子:
    这个分三个类:一个发送,一个接收,一个主程序(用到的是多线程编程)
    发送发:
    //群聊发送端

public class ChatSender extends Thread {
    
    @Override
    public void run() {
        try {
            //建立udp的服务
            DatagramSocket socket = new DatagramSocket();
            //准备数据,把数据封装到数据包中发送
            BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
            String line = null;
            DatagramPacket packet  = null;
            while((line = keyReader.readLine())!=null){
                //把数据封装 到数据数据包中,然后发送数据。
                packet = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("192.168.15.255"), 9090);
                //把数据发送出去
                socket.send(packet);
            }
            //关闭 资源
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案