总结:
接收端程序编写:
①调用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编程的相关知识点。 **一、UDP的特点** 1. **无连接性**:UDP不建立连接,直接发送数据,因此速度快,但可能会丢失数据或顺序错乱。 2. **不可靠性**:UDP不保证数据包的接收,也不检测和...
在这个“Udp编程”的主题中,我们将深入探讨UDP的基本原理、编程接口以及如何通过实例进行UDP客户端和服务器的开发。 首先,理解UDP的特点至关重要。与TCP(Transmission Control Protocol)不同,UDP不提供连接...
Linux UDP编程是网络编程中的一个重要部分,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,适用于实时性要求高、对数据完整性要求不那么严格的应用场景。在这个主题中,我们将...
本教程将深入探讨如何在Linux环境下进行UDP编程,包括客户端和服务器端的实现。 首先,理解UDP的特点至关重要。与TCP相比,UDP不提供连接建立、数据确认、流量控制或拥塞控制等服务,因此它的开销较小,但同时也...
在VC++环境中进行UDP编程,主要是利用Winsock库来实现的,这是一个为Windows平台提供网络通信功能的API。下面将详细介绍如何在VC++中进行UDP编程。 首先,我们需要了解Winsock的初始化。在程序开始时,需要调用`...
通过阅读TCP UDP笔记.doc,深入理解TCP连接与断开过程.pdf中的细节,以及TCP与UDP编程步骤.pdf的实践指导,初学者可以逐步构建起完整的TCP/UDP编程能力。在实际项目中,灵活运用这些知识,可以有效地处理各种网络...
在这个"socket TCP UDP编程实例"中,我们将会探讨如何在Windows环境下,利用Visual Studio 2015进行客户端和服务端的开发。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的...
在VB(Visual Basic)中实现UDP编程,主要是通过Winsock控件来完成的,它提供了对网络通信的基本支持。 在VB中,UDP编程分为两个主要部分:UDP服务器和UDP客户端。下面我们将详细讲解这两个部分。 **UDP服务器**:...
下面将详细介绍 Linux 下进行 UDP 编程的三个主要模型:基本服务器模型、循环服务器模型和并发服务器模型。 ### 1. 基本服务器模型 基本服务器模型是最简单的 UDP 服务器实现,通常用于接收单一客户端的请求。以下...
在这个"UDP编程实例"中,我们将深入理解如何使用C++进行UDP通信的实现。 在C++中,UDP编程主要涉及两个库函数:`socket()`用于创建套接字,`sendto()`和`recvfrom()`分别用于发送和接收数据报。下面我们将详细讨论...
在Java中,进行UDP编程主要是通过java.net包中的DatagramSocket和DatagramPacket类来实现的。本篇文章将深入探讨如何在Java中进行简单的UDP编程。 首先,了解UDP的特点是必要的。与TCP相比,UDP没有建立连接、数据...
本篇文章将深入探讨UDP编程的相关知识点,帮助你理解和应用这个高效但无连接的通信协议。 首先,我们要理解UDP的基本特性。与TCP不同,UDP是一种无连接的协议,这意味着在发送数据之前,它不需要建立或维护任何连接...
总之,TCP UDP编程是网络开发的基础,C++ Socket编程提供了一种直接与网络通信的方式。理解TCP和UDP的特点并掌握C++中的Socket编程技巧,是构建复杂网络应用的关键。在实践中,不断学习和调试,才能更好地应对各种...
在Windows环境下,使用Visual C++(VC++)进行UDP编程主要涉及到Winsock API的使用。下面我们将深入探讨如何在VC++中实现UDP编程。 首先,为了进行UDP编程,我们需要了解和使用Winsock库。Winsock是Windows操作系统...
QT UDP编程是一个重要的主题,特别是在开发跨平台的网络应用程序时。QT是一个强大的C++库,提供了丰富的功能,包括网络通信支持。在这个示例中,我们关注的是使用QT的QUdpSocket类来实现UDP(用户数据报协议)的...
在UDP编程中,我们通常会使用Socket接口来实现数据的发送和接收。 **UDP的特点:** 1. **无连接性**:UDP不建立连接就直接发送数据,因此速度快,但无法保证数据的顺序和可靠性。 2. **不可靠性**:没有确认机制,...
在Linux环境中进行UDP编程,开发者需要对套接字API有深入理解。以下是一些关键的概念和步骤: 1. **创建套接字**:使用`socket()`函数创建一个套接字,指定协议类型为`PF_INET`(表示IP协议)和协议族为`SOCK_DGRAM...
【标题】"104_网络编程基础知识.UDP编程"主要涵盖了C#语言在网络编程中的应用,特别是关于UDP(User Datagram Protocol)协议的编程实践。UDP是传输层的一个无连接协议,它提供了一种简单而高效的数据报服务,广泛...
在本项目中,"Udp编程:服务器和客户端"是通过Visual C++6.0环境,使用C++语言实现的UDP通信示例。下面我们将深入探讨UDP服务器和客户端的编程原理及其关键知识点。 1. UDP协议基础: - UDP协议的特点在于其轻量级...
同时,MATLAB官方文档也提供了丰富的UDP编程指南和技术支持。 综上所述,这个MATLAB UDP通信编程资源提供了一整套的学习和实践方案,涵盖了UDP协议的基础知识、MATLAB的UDP接口使用、以及实际通信过程中的问题处理...