网络编程(1)从UDP协议的demo开始

  对于做javaweb的人来说,网络编程这一块的知识接触的比较少,但它其实十分重要。从今天开始重新学习这一块的内容。

socket是插槽的意思,计算机通过网线连接,连接处就是一个槽。java中就是用这个槽的命名这些用于网络通信的类。其中,用于支持UDP协议最为简单,所以直接上代码:

发送方:

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

/**
 * @author zhoutian
 * @date 2019/6/8 15:41
 */
public class UDPSend {

    public static void main(String[] args) throws IOException {
        // 创建一个UDP对应的socket类
        DatagramSocket socket = new DatagramSocket();

        // 要发送的内容
        String data = "东窑 东窑 我是洞悉 我是洞悉!!!";

        // 要发送的数据包,它就像一个邮件,构造参数需要放入你的要寄的东西、东西的长度、要送达的地址以及详细的门牌号
        DatagramPacket packet = new DatagramPacket(data.getBytes(),data.length(),InetAddress.getByName("192.168.0.255"),1025); //0是网络段,255是广播地址

        // 发送数据
        socket.send(packet);

        //关闭
        socket.close();
    }

}

接收方:

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

/**
 * @author zhoutian
 * @date 2019/6/8 15:41
 */
public class UDPReceive {

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

        // 创建UDP的socket对象,需要注意的是,你需要指定socket监听的端口号,以便客户端能够确定你的门牌号,如果不指定,让系统随机分配,客户端就傻啦。快递员也不是侦探,他会找不到你具体地址
        DatagramSocket socket = new DatagramSocket(1025);

        // 创建一个空包,用来接收客户端发来的数据
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf,buf.length);

        // 调用接收方法,用一个空包为参数,表示让它把货卸下来后,放到我准备的空包里。
        socket.receive(packet);

        // 就这么简单我可以得到客户端发来的数据,并打印他们。
        String ip = packet.getAddress().getHostAddress();
        String data = new String(packet.getData(),0,packet.getLength());
        int port = packet.getPort();
        System.out.println(ip +"::"+ data +"::"+ port);

        // 关闭连接
        socket.close();

    }

}

为什么说他简单呢?因为UDP是不用建立连接的,他酷似一个不负责的快递员,当他没有找到你的邮件上写的地址时,他会毫不犹豫的把你的包裹扔掉。真是人渣啊,我只能说他是最不靠谱的协议啦。但这并不代表他一无是处,毕竟人渣也有爱国的嘛。

好了,代码很简单,学习不用操之过急,看是看不会的,敲几遍才会有感觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值