java 网络编程

文章介绍了网络编程的基本概念,包括C/S和B/S架构,并详细讲解了网络编程的三要素:IP、端口号和协议。接着,文章通过实例展示了UDP的无连接和不可靠交付特性,以及如何使用DatagramSocket进行数据发送和接收。此外,还探讨了TCP协议的连接性、可靠性以及三次握手和四次挥手过程,提供了基于ServerSocket和Socket的TCP通信示例。
摘要由CSDN通过智能技术生成

目录

1.网络编程绪论

1.1 网络编程概念

1.2 网络编程三要素

2.网络编程实战

2.1 UDP

2.1.1 UDP简介

 2.1.2 UDP实战

2.2 TCP

2.2.1 TCP简介

 2.2.2 TCP实战


1.网络编程绪论

1.1 网络编程概念

在网络通信协议下,不同计算机上运行的程序,进行的数据传输。

常见的软件架构:

C/S(Client/Server)客户端/服务器:在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序。画面可以做的非常精美,用户体验好,需要开发客户端,也需要开发服务端,用户需要下载和更新的时候太麻烦。

B/S(Browser/Server)浏览器/服务器:  只需要一个浏览器,用户通过不同的网址。客户访问不同的服务器。不需要开发客户端,只需要页面+服务端,用户不需要下载,打开浏览器就能使用,
如果应用过大,用户体验受到影响。

1.2 网络编程三要素

IP
设备在网络中的地址,是唯一的标识!
端口号
应用程序在设备中唯一的标识。
协议
数据在网络中传输的规则,常见的协议有UDP、TCP、http、https,ftp。
 

2.网络编程实战

2.1 UDP

2.1.1 UDP简介

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。UDP的主要特点:
1.UDP是无连接的,减少开销和发送数据之前的时延。
2.UDP使用最大努力交付,即不保证可靠交付。
3.UDP是面向报文的,适合一次性传输少量数据的网络应用。
 

UDP格式

 2.1.2 UDP实战

=一台电脑发送数据

public class Test {
    public static void main(String[] args) throws IOException {
        InetAddress address = InetAddress.getByName("10.9.6.56");
//        System.out.println(address.getHostName());
//        System.out.println(address.getHostAddress());
        DatagramSocket datagramSocket=new DatagramSocket();
        String msg="hello";
        byte[] bytes = msg.getBytes();
        DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length,address,10086);
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    }
}

一台电脑接收数据

 

public class Test1 {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket=new DatagramSocket(10086);
        byte[] bytes=new byte[1024];
        DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
        datagramSocket.receive(datagramPacket);
        byte[] data = datagramPacket.getData();
        InetAddress address = datagramPacket.getAddress();
        int length = datagramPacket.getLength();
        System.out.println(new String(data,0,length));
        System.out.println(address.getHostAddress());
        datagramSocket.close();

    }
}

2.2 TCP

2.2.1 TCP简介

这部分内容摘自王道考研

TCP协议特点如下图:

 TCP报文段是由TCP首部和TCP数据部分组成,TCP报文段首部格式如下图:

 TCP三次握手如下图:

 TCP连接释放四次握手如下图:

 2.2.2 TCP实战

服务端代码如下;

public class Test {
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket=new ServerSocket(10086);
        Socket accept = serverSocket.accept();
        InputStream inputStream = accept.getInputStream();
        int b;
        while ((b=inputStream.read())!=-1){
            System.out.println((char)b);
        }
        inputStream.close();
        serverSocket.close();
    }
}

客户端代码如下:

public class Test1 {
    public static void main(String[] args) throws IOException {

        Socket socket=new Socket("10.9.6.56",10086);
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("hello".getBytes());
        outputStream.close();
        socket.close();
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河亦问安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值