Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

1. UDP协议发送数据 和 接收数据

 UDP协议发送数据:
   创建发送端的Socket对象
   创建数据,并把数据打包
   调用Socket对象的发送方法,发送数据包
   释放资源

 UDP协议接收数据:

      • 创建接收端的Socket对象
       创建数据包,接收数据(接收容器)
       调用Socket对象的接收方法,接收数据包
       解析数据包,并显示在控制台
      • 释放资源

 

2. 代码实现

(1)首先我们先写发送端的程序,如下:

 1 package com.himi.udpDemo;
 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 /**
11  * 
12  * UDP协议发送数据:
13  * 1. 创建发送端的Socket对象
14  * 2. 创建数据,并把数据打包
15  * 3. 调用Socket对象的发送方法,发送数据包
16  * 4. 释放资源
17  *
18  */
19 public class UdpSendDemo {
20     public static void main(String[] args) throws IOException {
21         //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
22         //DatagramSocket:DatagramSocket()
23         DatagramSocket ds = new DatagramSocket();
24         
25         //创建数据,并把数据打包
26         //DatagramPacket:此类表示数据报包
27         /**DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
28         **         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
29         */
30         //创建数据
31         byte[] bytes = "风云雄霸天下,风云必胜. 风云合璧,摩柯无量. 圣心诀,玄武真功".getBytes();
32         //IP地址对象
33         InetAddress address = InetAddress.getByName("49.123.72.145");
34         //端口号
35         int port = 10086;
36         //数据打包
37         DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
38         
39             
40         //调用Socket对象的发送方法,发送数据包
41         //public void send(DatagramPacket p)
42         ds.send(dp);
43         
44         
45         //释放资源
46         ds.close();
47         
48     }
49 
50 }

 

(2)其次实现的是接收端的代码,如下:

 1 package com.himi.udpDemo;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 
 8 /**
 9  * 
10  * UDP协议接收数据:
11  * 1. 创建接收端的Socket对象
12  * 2. 创建数据包,接收数据(接收容器)
13  * 3. 调用Socket对象的接收方法,接收数据包
14  * 4. 解析数据包,并显示在控制台
15  * 5. 释放资源
16  *
17  */
18 
19 public class UdpReceiveDemo {
20 
21     public static void main(String[] args) throws IOException {
22         // 创建接收端的Socket对象
23         //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
24         DatagramSocket ds = new DatagramSocket(10086);
25         
26         //创建数据包,接收数据(接收容器)
27         //DatagramPacket(byte[] buf, int length)
28         byte[] bytes = new byte[1024];
29         int length  = bytes.length;
30         
31         DatagramPacket dp = new DatagramPacket(bytes, length);
32         
33         //调用Socket对象的接收方法,接收数据包
34         // public void receive(DatagramPacket p)  
35         ds.receive(dp);//阻塞式方法
36         
37         //解析数据包,并显示在控制台
38         //获取对方的IP
39         //public InetAddress getAddress()
40         InetAddress address = dp.getAddress();
41         String IP = address.getHostAddress();
42         
43         //public byte[] getData():获取数据的缓冲区
44         //public int getLength():获取数据的实际长度
45         byte[] bys = dp.getData();
46         int len = dp.getLength();
47         String s = new String(bys,0,len);
48         
49         System.out.println("发送端"+IP+"的数据:"+s);
50         
51         
52         //释放资源
53         ds.close();
54         
55                 
56 
57     }
58 
59 }

(3)运行:

-->先运行接收端(类似于先开启服务器

 

-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:

 

转载于:https://www.cnblogs.com/hebao0514/p/4858969.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<h3>回答1:</h3><br/>很抱歉,我是AI语言模型,无法提供自己的笔记。但是,我可以为您提供一些关于Linux网络编程的信息。Linux网络编程是指在Linux操作系统上进行网络编程的技术,主要包括socket编程、网络协议网络编程模型等内容。在Linux网络编程中,常用的编程语言有C、C++、Python等。Linux网络编程的应用非常广泛,可以用于开发各种网络应用程序,如Web服务器、邮件服务器、FTP服务器等。同时,Linux网络编程也是网络安全领域的重要技术之一,可以用于网络攻防、数据加密等方面。 <h3>回答2:</h3><br/> Linux网络编程是一门高级语言编程,包括了网络以及套接字的知识,它的目的是让开发者能够在Linux系统下进行网络应用程序的开发与运行。Linux网络编程中,主要涉及到如下的知识: 1.网络协议网络协议是数据在计算机网络内传输时所必须遵循的规则和约定。网络协议的共同目标是确保数据的可靠传输。 2.套接字:套接字是一种在网络编程中广泛使用的编程接口,它允许从一个进程向另一个进程通信。通过套接字的编程,可以实现网络上的客户端和服务器端的通信。 3.套接字选项:在套接字编程中,选项提供了一些可选项来控制套接字的行为。例如,可以使用SO_REUSEADDR选项来允许相同的IP地址和端口被多个套接字所使用,或者使用SO_LINGER选项来控制套接字在关闭时的行为。 4.网络编程的主要函数:对于网络编程而言,大多数使用的函数都是socket编程或一些与之相关的函数。如socket、bind、listen、accept、connect、send、recv等。 5.多线程编程和select函数:在网络编程中,常常需要使用多线程编程来同时处理多个套接字,使程序具有高并发性。而select函数可以在一个线程中监听多个套接字的I/O事件,从而优化服务器的性能和响应速度。 6.网络编程的实际应用:网络编程在实际应用中,可以实现许多有趣的功能。例如,可以创建简单的聊天程序、实现网络文件传输、远程控制、实现P2P通信等。 总之,Linux网络编程是一种非常重要的技术,要学习并掌握这门技术,需要掌握网络协议、套接字、多线程编程等基础知识。掌握这些知识后,开发者可以根据实际需求,灵活地使用网络编程技术来实现各种基于网络的应用程序。 <h3>回答3:</h3><br/>Linux网络编程在现代软件开发中扮演着非常重要的角色,这是因为它是一种跨平台的操作系统,并且为开发人员提供了良好的网络编程接口。以下是一些重要的技术和笔记: 1. 套接字(socket)编程—— 在Linux环境中,套接字是网络编程的关键要素。它被用于实现客户端/服务器应用程序中的通信,例如Web服务器和聊天室应用程序。在编写套接字程序时,必须使用包括bind,listen和accept等操作来处理连接请求。 2. 网络协议—— Linux支持各种网络协议,例如TCP/IP,UDP,ICMP,ARP和RIP等。其中TCP/IP是最常用的网络协议,因为它可靠且易于使用,在开发网络应用程序时需要具备其相关知识,例如TCP连接管理和协议数据包的格式化。 3. 多线程编程—— 在Linux环境中,多线程编程是一种非常重要的技术,可以同时处理多个网络请求,以提高应用程序的性能。通常使用POSIX线程库(pthread)来实现多线程编程,并使用同步和互斥机制来管理线程访问共享变量的冲突。 4. 网络安全—— 网络安全是Linux网络编程的一个重要方面,因为网络应用程序通常需要保护敏感数据和隐私信息。开发人员必须学习诸如SSL和TLS等加密协议,以确保数据传输的安全性。 总结来说,在Linux环境下进行网络编程需要熟悉套接字编程、网络协议、多线程编程和网络安全等技术。这些技术的结合可以实现高效的网络应用程序,并提高用户体验。在掌握这些技术后,开发人员可以将网络编程应用于Web服务器、聊天室应用程序、数据存储器等各种应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值