`
8366
  • 浏览: 802405 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

UDP编程

阅读更多

 

 

 

 

总结:

 

接收端程序编写:


①调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;②调用DatagramPacket(byte[] buf, int length),建立一个字节数组以接收UDP包 。③调用DatagramSocket类的receive(),接收UDP包。④最后关闭数据报套接字。


发送端程序编写:


①调用DatagramSocket()创建一个数据报套接字; ②调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包。 ③调用DatagramSocket类的send(),发送UDP包。④最后关闭数据报套接字。

实例:使用UDP模拟一个接收端和一个客户端,完成其中的通讯。

 

 

接收端(单线程):

 

 

package cn.com.xinli.test.socket;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPSocketServer  extends Thread
{  
	 public static void recv()
	  {
		 
	    try {
	    	System.out.println("接收端启动!");
	      DatagramSocket ds=new DatagramSocket(6000);
	      byte[] buf=new byte[100];
	      DatagramPacket dp=new DatagramPacket(buf,100);
	      ds.receive(dp);
	      System.out.println(new String(buf,0,dp.getLength()));
	      String str="Welcome you!";
	      DatagramPacket dpSend=new DatagramPacket(str.getBytes(),str.length(),
	                                           dp.getAddress(),dp.getPort());
	      ds.send(dpSend);
	      ds.close();
	    }
	    catch (Exception ex) {
	      ex.printStackTrace();
	    }
	  }
	  public static void main(String[] args) 
	  {
		 
		  UDPSocketServer  socketServer=new UDPSocketServer();
		  socketServer.recv();
		
	  }
	 
	}

 

 

11.12,光棍节过后的第一天,到处看看,发现我这个UDP的客户端是单线程的,于是改吧改吧,弄成个多线程的玩玩,听说现在找工作都爱考多线程并发编程啥的,哎我的软肋呀!!

 

 

接收端(多线程):

 

package cn.com.xinli.test.socket;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPSocketServer  extends Thread
{  
	
	
	private DatagramSocket ds;
	private DatagramPacket dp;
	
	UDPSocketServer(DatagramSocket ds,DatagramPacket dp)
	{
		
		this.ds=ds;
		this.dp=dp;
		
	}
	UDPSocketServer()
	{
		
	}
	 @Override
	public void run()
	{
		 try
		    {
			
			
		      String str="Welcome you!";
		      DatagramPacket dpSend=new DatagramPacket(str.getBytes(),str.length(),
		                                           dp.getAddress(),dp.getPort());
		      ds.send(dpSend);
		     // ds.close();
		    }
		    catch (Exception ex) {
		      ex.printStackTrace();
		    }
	}
	public  void recv()
	  {
		 int port=3333;
		 System.out.println("接收端启动,监听端口:"+port);
	    try
	    {
	       
	    	byte[] buf=new byte[100];
	        ds=new DatagramSocket(port);  
	        
	     
	      while(true)
	      {
	    	  
	    	  dp=new DatagramPacket(buf,100);   
	    	  ds.receive(dp); 
	    	  System.out.println("发送端说:"+new String(buf,0,dp.getLength()));
	    	  new UDPSocketServer(ds,dp).start(); 
	      }

	    }
	    catch (Exception ex) {
	      ex.printStackTrace();
	    }
	  }
	  public static void main(String[] args) throws SocketException
	  {
		  
		  UDPSocketServer  socketServer=new UDPSocketServer();
		  socketServer.recv();
	  }
	 
	}

 

 

 

发送端:

 

package cn.com.xinli.test.socket;
import java.net.*;
import java.io.*;
public class UDPSocketClient  
{

	  public static void main(String[] args)
	  {
		  
		   UDPSocketClient.send();
		  
		
	  }
	 
	  public static void send()
	  {
	    try {
	    	System.out.println("发送端启动!");
	      DatagramSocket ds=new DatagramSocket();
	      String str="Hello,this is zhangsan";
	      DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
	                                           InetAddress.getByName("localhost"),
	                                           6000);
	      ds.send(dp);
	      byte[] buf=new byte[100];
	      DatagramPacket dpRecv=new DatagramPacket(buf,100);
	      ds.receive(dpRecv);
	      System.out.println(new String(buf,0,dpRecv.getLength()));
	      ds.close();
	    }
	    catch (Exception ex) {
	      ex.printStackTrace();
	    }
	  }
	  
	}

 

 

测试:接收和发送正常

 

 

 

 

 

分享到:
评论

相关推荐

    JAVA进行UDP编程

    下面将详细介绍Java进行UDP编程的相关知识点。 **一、UDP的特点** 1. **无连接性**:UDP不建立连接,直接发送数据,因此速度快,但可能会丢失数据或顺序错乱。 2. **不可靠性**:UDP不保证数据包的接收,也不检测和...

    Udp编程

    在这个“Udp编程”的主题中,我们将深入探讨UDP的基本原理、编程接口以及如何通过实例进行UDP客户端和服务器的开发。 首先,理解UDP的特点至关重要。与TCP(Transmission Control Protocol)不同,UDP不提供连接...

    linux UDP编程总结和实例

    Linux UDP编程是网络编程中的一个重要部分,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,适用于实时性要求高、对数据完整性要求不那么严格的应用场景。在这个主题中,我们将...

    linux下udp编程

    本教程将深入探讨如何在Linux环境下进行UDP编程,包括客户端和服务器端的实现。 首先,理解UDP的特点至关重要。与TCP相比,UDP不提供连接建立、数据确认、流量控制或拥塞控制等服务,因此它的开销较小,但同时也...

    VC++ UDP编程实例

    在VC++环境中进行UDP编程,主要是利用Winsock库来实现的,这是一个为Windows平台提供网络通信功能的API。下面将详细介绍如何在VC++中进行UDP编程。 首先,我们需要了解Winsock的初始化。在程序开始时,需要调用`...

    TCP/UDP编程总结

    通过阅读TCP UDP笔记.doc,深入理解TCP连接与断开过程.pdf中的细节,以及TCP与UDP编程步骤.pdf的实践指导,初学者可以逐步构建起完整的TCP/UDP编程能力。在实际项目中,灵活运用这些知识,可以有效地处理各种网络...

    socket TCP UDP编程实例

    在这个"socket TCP UDP编程实例"中,我们将会探讨如何在Windows环境下,利用Visual Studio 2015进行客户端和服务端的开发。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的...

    VB的UDP编程案例

    在VB(Visual Basic)中实现UDP编程,主要是通过Winsock控件来完成的,它提供了对网络通信的基本支持。 在VB中,UDP编程分为两个主要部分:UDP服务器和UDP客户端。下面我们将详细讲解这两个部分。 **UDP服务器**:...

    Linux UDP 编程步骤

    下面将详细介绍 Linux 下进行 UDP 编程的三个主要模型:基本服务器模型、循环服务器模型和并发服务器模型。 ### 1. 基本服务器模型 基本服务器模型是最简单的 UDP 服务器实现,通常用于接收单一客户端的请求。以下...

    UDP编程实例(语言类型:C++)

    在这个"UDP编程实例"中,我们将深入理解如何使用C++进行UDP通信的实现。 在C++中,UDP编程主要涉及两个库函数:`socket()`用于创建套接字,`sendto()`和`recvfrom()`分别用于发送和接收数据报。下面我们将详细讨论...

    udp编程 java

    在Java中,进行UDP编程主要是通过java.net包中的DatagramSocket和DatagramPacket类来实现的。本篇文章将深入探讨如何在Java中进行简单的UDP编程。 首先,了解UDP的特点是必要的。与TCP相比,UDP没有建立连接、数据...

    网络编程2UDP编程 网络编程2UDP编程

    本篇文章将深入探讨UDP编程的相关知识点,帮助你理解和应用这个高效但无连接的通信协议。 首先,我们要理解UDP的基本特性。与TCP不同,UDP是一种无连接的协议,这意味着在发送数据之前,它不需要建立或维护任何连接...

    tcp udp 编程

    总之,TCP UDP编程是网络开发的基础,C++ Socket编程提供了一种直接与网络通信的方式。理解TCP和UDP的特点并掌握C++中的Socket编程技巧,是构建复杂网络应用的关键。在实践中,不断学习和调试,才能更好地应对各种...

    vc udp 编程

    在Windows环境下,使用Visual C++(VC++)进行UDP编程主要涉及到Winsock API的使用。下面我们将深入探讨如何在VC++中实现UDP编程。 首先,为了进行UDP编程,我们需要了解和使用Winsock库。Winsock是Windows操作系统...

    qt udp编程

    QT UDP编程是一个重要的主题,特别是在开发跨平台的网络应用程序时。QT是一个强大的C++库,提供了丰富的功能,包括网络通信支持。在这个示例中,我们关注的是使用QT的QUdpSocket类来实现UDP(用户数据报协议)的...

    udp编程Socket

    在UDP编程中,我们通常会使用Socket接口来实现数据的发送和接收。 **UDP的特点:** 1. **无连接性**:UDP不建立连接就直接发送数据,因此速度快,但无法保证数据的顺序和可靠性。 2. **不可靠性**:没有确认机制,...

    UDP编程源代码

    在Linux环境中进行UDP编程,开发者需要对套接字API有深入理解。以下是一些关键的概念和步骤: 1. **创建套接字**:使用`socket()`函数创建一个套接字,指定协议类型为`PF_INET`(表示IP协议)和协议族为`SOCK_DGRAM...

    104_网络编程基础知识.UDP编程

    【标题】"104_网络编程基础知识.UDP编程"主要涵盖了C#语言在网络编程中的应用,特别是关于UDP(User Datagram Protocol)协议的编程实践。UDP是传输层的一个无连接协议,它提供了一种简单而高效的数据报服务,广泛...

    Udp编程:服务器和客户端

    在本项目中,"Udp编程:服务器和客户端"是通过Visual C++6.0环境,使用C++语言实现的UDP通信示例。下面我们将深入探讨UDP服务器和客户端的编程原理及其关键知识点。 1. UDP协议基础: - UDP协议的特点在于其轻量级...

    UDP.zip_matlab udp_matlab udp编程_matlab udp通信_matlab 通信_udp matla

    同时,MATLAB官方文档也提供了丰富的UDP编程指南和技术支持。 综上所述,这个MATLAB UDP通信编程资源提供了一整套的学习和实践方案,涵盖了UDP协议的基础知识、MATLAB的UDP接口使用、以及实际通信过程中的问题处理...

Global site tag (gtag.js) - Google Analytics