`
百合不是茶
  • 浏览: 354758 次
社区版块
存档分类
最新评论

UDP网络编程

阅读更多

 

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王佳

...........

//分析所有在同一个局域网的客户端都可以收到该消息  ;可以用组播来实现网络监控

 

 

0
0
分享到:
评论

相关推荐

    TCP/UDP 网络编程

    总的来说,TCP和UDP网络编程是构建网络应用的基础,理解其工作原理和编程接口对于开发高效、可靠的网络服务至关重要。无论是TCP的可靠性还是UDP的效率,都需要根据具体应用场景来选择合适的协议。通过实践案例,我们...

    基于MFC的UDP网络编程

    【基于MFC的UDP网络编程】是针对Visual Studio 2010环境下,利用Microsoft Foundation Classes(MFC)库进行的用户数据报协议(UDP)的网络编程实践。MFC是微软提供的一种C++类库,它封装了Windows API,使得开发者...

    MFC实现UDP网络编程

    包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和...

    c# UDP网络编程源代码

    下面将详细阐述C#中UDP网络编程的相关知识点。 **1. UDP基础知识** UDP是一种无连接的协议,这意味着在发送数据前不需要建立连接,因此它的开销小,传输速度快。然而,这也意味着没有流控制、拥塞控制以及数据重传...

    udp网络编程聊天程序

    UDP网络编程。。。。。。。。。。。。。。

    mfc实现tcp/udp网络编程

    总的来说,利用MFC进行TCP/UDP网络编程,需要理解网络协议的基本原理,掌握`CAsyncSocket`类的使用,以及处理网络通信中的各种异常情况。这是一项需要理论知识和实践经验相结合的任务,对于开发网络应用是至关重要的...

    基于UC/OS操作系统的UDP网络编程

    本篇文章将深入探讨如何在UC/OS操作系统上进行UDP网络编程。 一、UC/OS操作系统简介 UC/OS是一款实时嵌入式操作系统,以其可剥夺型多任务机制、微小的内存占用和高度可移植性著称。它提供了诸如任务管理、内存管理...

    周立功开发板udp网络编程

    下面将详细介绍如何在周立功开发板上进行UDP网络编程。 首先,我们要理解UDP的基本原理。UDP是一种无连接的协议,它不建立连接也不保证数据包的顺序和可靠性,但正因为如此,它具有较低的开销和更快的数据传输速度...

    UDP网络编程1

    UDP网络编程是网络通信中的一个重要组成部分,特别是在实时性要求较高的应用中,如视频流传输、在线游戏等。本文主要探讨了UDP(用户数据报协议)的基本特性及其在Python中的使用,通过一个简单的UDP客户端与服务器...

    基于SOCKET的UDP网络编程C++(IPv4)

    本节将深入探讨基于SOCKET的UDP网络编程在C++中的实现,以及如何通过IPv4地址进行通信。 首先,我们需要了解SOCKET API,这是操作系统提供给程序员用于进行网络通信的一组接口。在C++中,我们可以使用socket库来...

    基于UDP网络编程简单聊天窗口(客户端和服务端图形界面)适合新手当作业或学习

    【标题】中的“基于UDP网络编程简单聊天窗口”是指使用UDP协议进行网络通信的一个简易聊天应用,它包含客户端和服务器端的图形用户界面。UDP,即User Datagram Protocol,是一种无连接的、不可靠的传输层协议,常...

    udp网络编程实例(CS模式)

    在这个实例中,我们将探讨如何使用C#进行UDP网络编程,包括创建UDP客户端(UDPClient)和服务器(UDPServer)。 在C#中,我们可以使用System.Net.Sockets命名空间中的UdpClient类来实现UDP通信。首先,让我们从UDP...

    UDP网络编程步骤.pdf

    在进行UDP网络编程时,通常分为服务器端和客户端两个部分。以下是根据标题《UDP网络编程步骤.pdf》和描述中提到的关键步骤进行的详细说明: ### 服务器端步骤 1. **包含头文件和库**:首先需要包含`winsock2.h`...

    UDP网络编程步骤.docx

    以下将详细阐述如何进行UDP网络编程。 **服务器端编程步骤**: 1. **包含头文件与库文件**: - `winsock2.h`:Windows下的Socket编程接口头文件。 - `ws2_32.lib`:Windows Socket 2动态链接库,提供Socket API...

    tcp、udp网络编程

    ### TCP与UDP网络编程知识点详解 #### 一、TCP与UDP概述 TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是两种常见的网络传输协议,主要用于实现不同主机间的通信。它们均位于OSI模型的...

    TCPUDP网络编程测试

    TCPUDP网络编程测试

    linuxUDP网络编程

    linux环境下的UDP网络编程,主要实现服务器端对客户端发送过来的数据进行广播的功能。适合入门者。

    linux下多线程udp网络编程实现消息驱动多状态机流转1

    linux下多线程udp网络编程实现消息驱动多状态机流转,收发一体

    UDP网络编程源码

    UDP 组播,局域网中收发,vc开发环境-UDP C++编程语言

    基于Java GUI 多线程 UDP网络编程的小型聊天软件

    基于Java GUI 多线程 UDP网络编程的小型聊天软件

Global site tag (gtag.js) - Google Analytics