网络编程

Posted xiaonizi1027

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程相关的知识,希望对你有一定的参考价值。

网络通讯的三要素:

1.IP地址:InetAddress      网络中设备的标识

本地回环地址:127.0.0.1 主机名:localhost

2.端口号

用于标识进程的逻辑地址,不同进程的标识

有效端口:0~65535,其中0~1024是系统使用或保留端口。

3.传输协议

通讯的规则,常见的协议有TCP、UDP。

UDP的作用:将数据及源和目的封装成数据包中,不需要建立链接,每个数据报上网大小在限制在64k内,因无连接,是不可靠协议,不需要建立连接,速度快。

TCP的作用:建立连接,形成传输数据的通道。在连接中进行大数据量的传输,通过三次握手完成连接,是可靠协议,必须建立连接,所以效率稍低。

三次握手类似打电话:

发送端:你在吗?

接收端:在,你可以发送数据。

发送端:那我开始发送数据了。

UDP传输

udp发送端代码:

 1 package chuanzhiBlog;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 import java.net.SocketException;
 8 import java.net.UnknownHostException;
 9 
10 public class UDPSendDemo {
11 
12     public static void main(String[] args) throws IOException {
13         // TODO Auto-generated method stub
14         /*
15          * 需求:建立udp的发送端
16          * 思路:
17          * 1.建立可以实现udp传输的socket服务。
18          * 2.明确具体发送的数据。
19          * 3.通过socket服务将具体的数据发送出去。
20          * 4.关闭服务。
21          */
22         System.out.println("UDP发送端启动了。。。");
23         
24         //1.创建udp服务。
25         DatagramSocket ds = new DatagramSocket();
26         
27         //2.明确数据。
28         String str = "注意啦,UDP来了!";
29         
30         String ipdress = "127.0.0.1";
31         //3.发送数据, 将数据封装到数据包中。
32             //3.1将数据封装到数据包对象中。数据包会明确目的地址和端口。
33         byte[] buf = str.getBytes(); 
34         DatagramPacket dp = new DatagramPacket(buf, buf.length,
35                 InetAddress.getByName(ipdress),10000);
36             //3.2发送。
37         ds.send(dp);
38             
39         //4.关闭。
40         ds.close();
41     }
42 
43 }

UDP接收端

package chuanzhiBlog;

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

public class UDPReceDemo {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        /*
         * 创建udp的接收端。
         * 思路:
         * 1.创建socket服务。明确一个端口。
         * 2.收数据。
         * 3.将其中所需要的数据取出来,IP,data,端口。
         * 4.关闭资源。
         */
        System.out.println("UDP接受端启动了。。。。。");
        
        //1.创建socket服务。
        DatagramSocket ds = new DatagramSocket(10000);
        
        //2.使用socket的接收方法。接受数据。需要将收到的数据存储到数据包中。
        //可以通过数据包对象的方法对接收的数据进行解析。
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        ds.receive(dp);
        
        //3.通过数据包对象解析收到的数据,使用数据包的方法。
        String ip = dp.getAddress().getHostAddress();
        int port = dp.getPort();
        String str = new String(dp.getData(),0,dp.getLength());
        System.out.println(ip+":"+port+"....."+str);
    }

}

 

以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC

如何在 Django Summernote 中显示编程片段的代码块?