美文网首页Java互联网科技Java 杂谈
网络编程和我学java有什么关系?这里我来告诉你

网络编程和我学java有什么关系?这里我来告诉你

作者: java欧阳丰 | 来源:发表于2019-08-05 09:53 被阅读3次

    对于刚学java的同学,总感觉只要学好java就好吗?不,其实你做一个程序还要能上线才是好的程序。上线又是靠什么呢?没错就是网络!

    网络编程

    网络编程概述

    网络编程就是将不同地理位置的计算机,通过IO流进行数据传递

    一、网络模型

    二、网络编程的三要素

    1、IP地址(InetAddresss)

    1.1、IP地址表示计算机在网络设备中的标识

    1.2、不宜记忆,可以通过主机名来记

    1.3、本机地址:127.0.0.1localhost

    2、端口号

    2.1、用于标识进行的逻辑地址

    2.2、有效端口号:0--655360-1024为系统保留端口

    3、传输协议

    定义通讯的规则

    三、IP地址

    1、它是网络中的设备标识

    2、不易记忆,可用主机名表示,两者存在映射关系

    3、本机回环地址:127.0.0.1,主机名为:localhost。

    IP地址:java中对应的是InetAddress类,存在于java.net包中。

    IP地址分为5类:

    A类 1.0.0.0 到126.0.0.0

    0.0.0.0 和127.0.0.0保留

    B类 128.1.0.0到191.254.0.0

    C类 192.0.1.0 到223.255.254.0

    D类 224.0.0.0到239.255.255.255用于多点广播

    E类 240.0.0.0到255.255.255.254保留

    255.255.255.255用于广播

    InetAddress类

    importjava.net.*;  
    class  IPDemo{  
        publicstatic void main(String[] args) throws UnknownHostException{  
            //通过名称(ip字符串or主机名)来获取一个ip对象。  
            InetAddress ip =InetAddress.getByName("www.baidu.com");
            System.out.println("addr:"+ip.getHostAddress());  
            System.out.println("name:"+ip.getHostName());  
        }  
    } 
    

    四、网络编程UDP—TCP

    UDP的特点:(面向无连接)

    1、将数据源和目的封装到数据包中,不需要建立连接

    2、每个数据包的大小限制在64K

    3、无连接,是不可靠协议

    4、无连接,速度快

    TCP特点:(面向连接)

    1、建立连接,形成传输数据的通道

    2、在连接中进行大量数据传输

    3、要经过三次捂手完成连接,是可靠协议

    4、需要建立连接,速度慢

    五、Socket(Socket也称套接字)

    1、Socket是为网络通信提供的一种机制

    2、通信的两端都有Socket

    3、网络通信其实就是Socket间的通信

    4、数据在Socket间通过IO传输

    通信的步骤:

    1,找到IP地址

    2,数据要发送到对象指定应用程序,为标识这些应用程序,所以给这些网络应用程序都用数字标识,为方便称呼这个数字,叫做端口,即逻辑端口。

    3,定义通信规则,称之为协议。国际组织定义了通用协议,即TCP/IP。

    注意:必须要有数字标识(端口号)才能将数据发送到应用程序上。

    UDP发送和接收端

    UDP发送端
    /*
     * UDP发送数据
     */
    /*
     * 1、创建发送端Socket对象
     *      new DatagramSocket对象
     * 2、将数据进行打包
     *      new DatagramPacket
     * 3、发送数据
     *      send
     * 4、关闭资源
     *      close
     */
    public class UDPSocket {
        public static void main(String args[]) throws IOException{
            //创建UDP发送端Socket对象
            DatagramSocket ds=new DatagramSocket();
            String str="你好";
            //因为数据打包,打包的是字节,所以讲字符串进行转换
            byte [] b=str.getBytes();
            //获取数据的长度
            int len=b.length;
            //封装目的地
            InetAddress id=InetAddress.getByName("192.168.24.49");
            //封装端口号
            int port=8080;
            //将数据,目的地,端口进行封装
            DatagramPacket dp=new DatagramPacket(b,len,id,port);
            //发送数据
            ds.send(dp);
            ds.close();
        }
    }
    
    UDP接收端
    /*
     * 接收端
     */
    /*
     * 1、创建UDPSocket对象,并制定端口号
     *      new DatagramSocket(端口号)
     * 2、创建接收端数据包,进行拆包
     *      new DatagramPacket
     * 3、接受数据
     *      receive
     * 4、关闭资源
     * 
     */
    public class UDPReceive {
        public static void main(String [] args) throws IOException{
            //创建UDPSocket对象
            DatagramSocket ds=new DatagramSocket(8080);
            //定义数据包,接受数据,进行拆包
            while(true){
                byte [] b=new byte[1024];
                DatagramPacket dp=new DatagramPacket(b,b.length);
                //接受数据
                ds.receive(dp);
                String ip=dp.getAddress().getHostAddress();
                String data=new String (dp.getData(),0,dp.getLength());
                int port=dp.getPort();
                System.out.println(ip+":"+data+":"+port);
            }
        }
    }
    

    TCP发送和接收端

    TCP发送端
    /*
     * TCP发送端
     */
    /*
     * 1、创建发送端Socket对象,并建立连接
     * 2、创建字节写入流对象
     * 3、写入数据
     * 4、关闭资源
     */
    public class ClientTCP {
        public static void main(String args[]) throws IOException{
            //创建发送端Socket对象
            Socket s=new Socket("192.168.24.43",10086);
            //创建写入流对象
            OutputStream os=s.getOutputStream();
            //写入数据
            os.write("你好,我来了".getBytes());
            //关闭资源
            os.close();
        }
    }
    
    TCP服务端
    /*
     * TCP服务端
     */
    /*
     * 1、创建服务端Socket对象
     *      new ServerSocet()
     * 2、创建Socket对象用来监听接受端
     *      accept()
     * 3、创建读取流,并获取数据
     *      getInputStream()
     * 4、关闭资源
     */
    public class ServerTCP {
        public static void main(String [] args) throws IOException{
            //创建服务端Socket对象
            ServerSocket ss=new ServerSocket(10086);
            //创建Socket对象,来监听接受端
            Socket s=ss.accept();
            //创建读取流对象getInputStream
            InputStream is=s.getInputStream();
            //定义一个字节数组用来读取数据
            byte [] b=new byte[1024];
            int len=is.read(b);
            String str=new String(b,0,len);
            System.out.println(str);
            s.close();
        }
    }
    

    看到这里大家应该对网络编程有了一定的了解吧,如果大家喜欢这篇文章可以点一下关注哦!!!

    相关文章

      网友评论

        本文标题:网络编程和我学java有什么关系?这里我来告诉你

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