毕向东udp学习笔记1

参看了毕向东老师的视频教程,准备直接用EditPlus记事本来直接敲Java代码,好好学习一下udp部分,GUI部分,线程部分,加油

 项目功能:

  实现udp简单的发送接收功能。

当使用EditPlus时,编辑好Demo.java后,

进入该文件的路径,按住Shift键,鼠标右键,显示在此处打开命令行窗口,好处是路径直接显示

步骤:

1. javac demo.java

2. java demo

截图:

发送端代码:

 1 import java.net.*;
 2 import java.io.*;
 3 
 4 public class udpSend
 5 {
 6     /*
 7      *记得抛异常
 8     */
 9     public static void main(String[] args) throws IOException{
10         
11         System.out.println("发送端启动...");
12         /*
13         *创建UDP传输的发送端
14         * 思路:
15         * 1.建立udp的socket服务(new socket)
16         * 2,将要发送的数据封装到数据包中。(packet)
17         * 3,通过udp的socket服务将数据包发送出去(send)
18         * 4,关闭socket服务(close)
19 
20         **抛一个大异常:IOException
21         */
22 
23         //1.udpsocket服务对象,使用DatagramSocket创建,可以指明本地IP和端口
24         DatagramSocket ds = new DatagramSocket(8888);
25 
26         //2.将要发送的数据封装到数据包中
27         String str ="udp传输,哥们,我是客户端";
28         byte[] buf =str.getBytes();
29         DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.103"),10000);
30 
31         //3.udp发送,使用socket服务将数据包发送出去
32         ds.send(dp);
33 
34         //4.关闭连接
35         ds.close();
36 
37         
38     }
39 }

接收端代码:

import java.net.*;
import java.io.*;

public class udpRecv
{
    /*
    * 创建UDP传输的接收端
    * 1.建立udp socket服务,因为是要接收数据,必须指明端口号
    * 2,创建数据包,用于存储接收到的数据。方便用数据包对象的方法处理数据
    * 3,使用socket服务的receive方法将接收的数据存储到数据包中
    * 4,通过数据包的方法解析数据包中的数据
    * 5,关闭资源

    *抛一个大异常:IOException
    */
    public static void main(String[] args) throws IOException{
        //1,创建udp socket服务
        DatagramSocket ds = new DatagramSocket(10000);

        //2,创建数据包
        byte[] buf =new byte[1024];
        DatagramPacket dp =new DatagramPacket(buf,buf.length);

        //3,使用接收的方法将数据包存储到数据包中
        ds.receive(dp);//阻塞式

        //4.通过数据包对象的方法,解析其中的数据
        String ip = dp.getAddress().getHostAddress();
        int port  = dp.getPort();
        String content = new String(dp.getData(),0,dp.getLength());


        //5关闭资源
        ds.close();

        System.out.println(ip+"::" +port+":"+content);
        
    }
}

需要注意的是:

1.一般设计网络部分都要导入.net .io包

2.抛异常部分,直接

throws IOException
原文地址:https://www.cnblogs.com/shuqingstudy/p/4928087.html