当前位置: 代码网 > it编程>编程语言>Java > Java网络编程之IP,端口号,通信协议(UDP,TCP)

Java网络编程之IP,端口号,通信协议(UDP,TCP)

2024年08月06日 Java 我要评论
③协议:数据在网络传输中的规则,常见的协议有:UDP、TCP、HTTP、HTTPS、FTP。使用广播通信,发送方可以将数据包一次性发送给所有计算机,而无需指定单独的目标IP地址。由于互联网的蓬勃发展,IP地址的需求量愈来愈大,而IPV4的模式下IP的总数是有限的。在组播通信中,发送方将数据包发送到一个特定的组播IP地址,而不是单独的目标IP地址。单播是一种UDP通信的方式,其中一台发送方的计算机向一台接收方的计算机发送数据包。所有加入该组播组的接收方都可以接收到发送方发送的数据包。

1.软件架构

2.网络编程三要素

3.ip

1.ipv4

2.ipv6

        //获取inetaddress的对象
        inetaddress address = inetaddress.getbyname("127.0.0.1");

4.端口号

5.协议

在这里插入图片描述

1.udp协议

udp协议发送数据:

public class send{
    public static void main(string[] args) throws ioexception {
        //创建datagramsocket对象
        datagramsocket ds = new datagramsocket();
        //打包数据
        string str = "你好!!";
        byte[] bytes = str.getbytes();
        inetaddress address = inetaddress.getbyname("127.0.0.1");
        int port = 10006;

        datagrampacket dp = new datagrampacket(bytes, bytes.length, address, port);
        //发送数据
        ds.send(dp);
        //释放资源
        ds.close();
    }
}

udp协议接收数据:

public class receive{
    public static void main(string[] args) throws ioexception {
        //创建datagramsocket对象:接收时绑定的端口号要与发送时的端口保持一致
        datagramsocket ds = new datagramsocket(10086);
        //接收数据包
        byte[] bytes = new byte[1024];
        datagrampacket dp = new datagrampacket(bytes, bytes.length);
        ds.receive(dp);
        //解析数据包
        byte[] data = dp.getdata();
        int length = dp.getlength();
        inetaddress address = dp.getaddress();
        int port = dp.getport();

        system.out.println("接收到数据:" + new string(data, 0, length));
        system.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口号发出的");
        //释放资源
        ds.close();
    }
}

1.单播

2.组播

3.广播

2.tcp协议

客户端发送数据:

public class client {
    public static void main(string[] args) throws ioexception {
        //发送数据
        //创建socket对象
        socket socket = new socket("127.0.0.1", 10001);
        //从连接通道中获取输出流
        outputstream os = socket.getoutputstream();
        //写出数据
        os.write("你好".getbytes());
        //释放资源
        os.close();
        socket.close();
    }
}

服务器接收数据:

public class server {
    public static void main(string[] args) throws ioexception {
        //接收数据
        //
        serversocket ss = new serversocket(10001);
        //监听用户的连接
        socket socket = ss.accept();
        //从连接通道中获取输入流数据
        inputstream is = socket.getinputstream();
        //解决中文乱码
        inputstreamreader isr = new inputstreamreader(is);
        //使用缓冲流提高读取效率
        bufferedreader br = new bufferedreader(isr);
        int b;
        while ((b = br.read()) != -1) {
            system.out.println((char) b);
        }
        //释放资源
        socket.close();
        ss.close();

    }
}

1.三次握手

2.四次挥手

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com