美文网首页
Java-网络编程

Java-网络编程

作者: 码农随想录 | 来源:发表于2018-07-23 16:02 被阅读13次

网络参考模型

网络参考模型

网络要素-IP地址

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class IPDemo {

    /**
     * @param args
     * @throws UnknownHostException 
     * @throws IOException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        /*
         * ip地址对象。InetAddress
         */
        
        //获取本地主机地址对象。
//      InetAddress ip = InetAddress.getLocalHost();
        //获取其他主机的地址对象。
        InetAddress ip = InetAddress.getByName("www.sina.com.cn");
        System.out.println(ip.getHostAddress()+":"+ip.getHostName());
    }
}

网络要素-域名解析

域名解析过程

TCP和UDP

TCP和UDP

UDP 应用

  • 发送端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPSend {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
    
        System.out.println("udp 发送端 run");
        
        /*
         * 通过查阅文档,了解到用于UDP传输协议的对象是DatagramSocket。
         * 
         * 通过udp的协议发送一段文本数据。
         * 思路:
         * 1,需要先建立udp的socket。它具备者发送或者接收功能。
         * 2,将数据封装到数据包中。数据包对象是DatagramPacket。
         * 3,使用socket对象的send方法将数据包发送出去。
         * 4,关闭资源。
         */
        
//      1,需要先建立udp的socket。它具备者发送或者接收功能。
        DatagramSocket ds = new DatagramSocket(8888);
        
//      2,将数据封装到数据包中。数据包对象是DatagramPacket。
        String text = "hello udp来了。";
        byte[] buf = text.getBytes();//将数据转成字节数组。
//      将字节数组封装到数据包中。
        DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.13.42.74"), 10000);
        
//      3,使用socket对象的send方法将数据包发送出去。
        ds.send(dp);
        
//      4,关闭资源。
        ds.close();
    }
}
  • 接收端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPRece {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        System.out.println("udp 接收端 run");
        /*
         * 定义一个udp的接收端。接收发送过来的数据。并显示在屏幕上。
         * 思路:
         * 1,先有udp  socket服务。而且记住:接收端一定要明确端口。否则收不到数据。
         * 2,接收数据。之前先将数据存储到数据包中。
         * 3,先定义数据包。
         * 4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
         * 5,关闭资源。
         * 
         */
//      1,先有udpsocket服务。
        DatagramSocket ds = new DatagramSocket(10000);
        
//      2,接收数据。之前先将数据存储到数据包中。
//      3,先定义数据包。
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        ds.receive(dp);//阻塞
//      4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
        String ip = dp.getAddress().getHostAddress();
        int port = dp.getPort();
        String text = new String(dp.getData(),0,dp.getLength());
        
        System.out.println(ip+":"+port+":"+text);
//      5,关闭资源。
        ds.close();
    }

}

相关文章

  • Java-网络编程

    网络参考模型 网络要素-IP地址 网络要素-域名解析 TCP和UDP UDP 应用 发送端 接收端

  • java-网络编程

    1、Java支持基于流的通信和基于包的通信 基于流的通信使用TCP协议(传输控制协议)进行数据传输,传输是无损可靠...

  • JAVA-并发编程(一)

    JAVA-并发编程(一) sschrodinger 2018/11/28 引用 《Java 并发编程的艺术》 方腾...

  • JAVA-并发编程(二)

    JAVA-并发编程(二) sschrodinger 2019/05/14 引用 《Java 并发编程的艺术》 方腾...

  • JAVA-跳转语句(break,continue)

    java-编程基础 1. 跳转语句(break,continue) 1.1 break语句 break语句在swi...

  • JAVA语言

    Java (计算机编程语言) JavaEE:12天掌握Java语言开发 - Java-环境搭建及基础语法 - 创...

  • Hello Java

    目录 Java-基础(1/6) Java-对象(2/6) Java-核心库类 上(3/6) Java-核心库类下(...

  • Java-网络编程-BIO&NIO&AIO

    一、IO模型 IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO...

  • JAVA-并发编程(三)

    JAVA-并发编程(三) sschrodinger 2019/5/16 线程 线程是现代操作系统的最小调度单位,也...

  • Java-浅析Object类

    Java-浅析Object类 ++2016.7.19++byside @Java-浅析Object类 ======...

网友评论

      本文标题:Java-网络编程

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