UDP是基于无连接的,不可靠的传输 与TCP/IP相反
UDP实现私聊,发送方式客户端,接受方式服务器
package netUDP_sc; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.SocketException; /** * 发送方 * * @author Administrator * */ public class Sender_V1 { public static void main(String[] args) { try { // 创建发送本地数据对象 SocketAddress senders = new InetSocketAddress("127.0.0.1", 9090); // 创建接受数据对象 SocketAddress Receiver = new InetSocketAddress("127.0.0.1", 9091); // 创建发送方 DatagramSocket socket = new DatagramSocket(senders); int i = 0; while (true) { // 发送字符串 byte[] buf = (i + "hello").getBytes(); // 创建要发送包的对象 DatagramPacket datapacket = new DatagramPacket(buf, buf.length, Receiver); socket.send(datapacket); i++; Thread.sleep(1000); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
接受方;
package netUDP_sc; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketAddress; /** * 接受方 * * @author Administrator * */ public class Receiver_V1 { public static void main(String[] args) { try { // 创建接受方 SocketAddress Receiver = new InetSocketAddress("127.0.0.1", 9091); // 创建传递方 DatagramSocket socket = new DatagramSocket(Receiver); // 创建数据缓冲区 byte[] buf = new byte[20]; DatagramPacket packet = new DatagramPacket(buf, buf.length); while (true) { System.out.println("等待接受数据......"); // 接受数据到包中,如果没有数据则会阻塞 socket.receive(packet); // 获取包中的字节 byte[] bs = packet.getData(); // 将字节转化成字符串 String str = new String(bs); // 输出 发送者的ip地址和字符串 System.out.println(packet.getSocketAddress() + " 发来的" + str); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
运行;
等待接受数据......
/127.0.0.1:9090 发来的0hello
..............
UDP实现组播
2.UDP组播消息
0.0.0.0 255.255.255.255
A类地址 1.0.0.0~126.0.0.0
B类地址128.0.0.0~191.254.0.0
C类地址:192.0.0.0~223.255.255.0
D类地址224.0.0.0~239.255.255.254(组播地址)
利用MulticastSocket类来实现
package netUDP_组播; /** * 发送方 */ import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.MulticastSocket; import javax.swing.plaf.multi.MultiButtonUI; public class SendAll { public static void main(String[] args) { try { //创建ip InetAddress inetAdd = InetAddress.getByName("230.0.0.1"); int i = 0 ; while(true){ //创建发送数据包 byte[] buf =(i+"王佳").getBytes(); DatagramPacket packet = new DatagramPacket(buf, buf.length,inetAdd,9092); //创建组播和端口 MulticastSocket cast = new MulticastSocket(); //组播消息 cast.send(packet); i++; Thread.sleep(500); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package netUDP_组播; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.MulticastSocket; /** * 接收方 * @author Administrator * */ public class AllReceiver { public static void main(String[] args) throws InterruptedException { try { //创建组播端口 MulticastSocket cast = new MulticastSocket(9092); //创建接收方的地址 InetAddress InetAdd = InetAddress.getByName("230.0.0.1"); cast.joinGroup(InetAdd); while(true){ //创建接收数据包 //创建数据缓冲 byte[] buf = new byte[10]; DatagramPacket packet = new DatagramPacket(buf, buf.length); System.out.println("等待接收数据>>>>>>"); cast.receive(packet); System.out.println(new String(packet.getData())); Thread.sleep(500); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
结果;
等待接收数据>>>>>>
0王佳
...........
//分析所有在同一个局域网的客户端都可以收到该消息 ;可以用组播来实现网络监控
相关推荐
总的来说,TCP和UDP网络编程是构建网络应用的基础,理解其工作原理和编程接口对于开发高效、可靠的网络服务至关重要。无论是TCP的可靠性还是UDP的效率,都需要根据具体应用场景来选择合适的协议。通过实践案例,我们...
【基于MFC的UDP网络编程】是针对Visual Studio 2010环境下,利用Microsoft Foundation Classes(MFC)库进行的用户数据报协议(UDP)的网络编程实践。MFC是微软提供的一种C++类库,它封装了Windows API,使得开发者...
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和...
下面将详细阐述C#中UDP网络编程的相关知识点。 **1. UDP基础知识** UDP是一种无连接的协议,这意味着在发送数据前不需要建立连接,因此它的开销小,传输速度快。然而,这也意味着没有流控制、拥塞控制以及数据重传...
UDP网络编程。。。。。。。。。。。。。。
总的来说,利用MFC进行TCP/UDP网络编程,需要理解网络协议的基本原理,掌握`CAsyncSocket`类的使用,以及处理网络通信中的各种异常情况。这是一项需要理论知识和实践经验相结合的任务,对于开发网络应用是至关重要的...
本篇文章将深入探讨如何在UC/OS操作系统上进行UDP网络编程。 一、UC/OS操作系统简介 UC/OS是一款实时嵌入式操作系统,以其可剥夺型多任务机制、微小的内存占用和高度可移植性著称。它提供了诸如任务管理、内存管理...
下面将详细介绍如何在周立功开发板上进行UDP网络编程。 首先,我们要理解UDP的基本原理。UDP是一种无连接的协议,它不建立连接也不保证数据包的顺序和可靠性,但正因为如此,它具有较低的开销和更快的数据传输速度...
UDP网络编程是网络通信中的一个重要组成部分,特别是在实时性要求较高的应用中,如视频流传输、在线游戏等。本文主要探讨了UDP(用户数据报协议)的基本特性及其在Python中的使用,通过一个简单的UDP客户端与服务器...
本节将深入探讨基于SOCKET的UDP网络编程在C++中的实现,以及如何通过IPv4地址进行通信。 首先,我们需要了解SOCKET API,这是操作系统提供给程序员用于进行网络通信的一组接口。在C++中,我们可以使用socket库来...
【标题】中的“基于UDP网络编程简单聊天窗口”是指使用UDP协议进行网络通信的一个简易聊天应用,它包含客户端和服务器端的图形用户界面。UDP,即User Datagram Protocol,是一种无连接的、不可靠的传输层协议,常...
在这个实例中,我们将探讨如何使用C#进行UDP网络编程,包括创建UDP客户端(UDPClient)和服务器(UDPServer)。 在C#中,我们可以使用System.Net.Sockets命名空间中的UdpClient类来实现UDP通信。首先,让我们从UDP...
在进行UDP网络编程时,通常分为服务器端和客户端两个部分。以下是根据标题《UDP网络编程步骤.pdf》和描述中提到的关键步骤进行的详细说明: ### 服务器端步骤 1. **包含头文件和库**:首先需要包含`winsock2.h`...
以下将详细阐述如何进行UDP网络编程。 **服务器端编程步骤**: 1. **包含头文件与库文件**: - `winsock2.h`:Windows下的Socket编程接口头文件。 - `ws2_32.lib`:Windows Socket 2动态链接库,提供Socket API...
### TCP与UDP网络编程知识点详解 #### 一、TCP与UDP概述 TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是两种常见的网络传输协议,主要用于实现不同主机间的通信。它们均位于OSI模型的...
TCPUDP网络编程测试
linux环境下的UDP网络编程,主要实现服务器端对客户端发送过来的数据进行广播的功能。适合入门者。
linux下多线程udp网络编程实现消息驱动多状态机流转,收发一体
UDP 组播,局域网中收发,vc开发环境-UDP C++编程语言
基于Java GUI 多线程 UDP网络编程的小型聊天软件