UDP案例代码
Posted 技术很low的瓜贼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UDP案例代码相关的知识,希望对你有一定的参考价值。
文章目录
UDP网络编程的案例代码
用于描述发送发与接收方之间的通信
普通接收方/发送方代码
- 接收方
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Socket;
/**
* 接收方
*/
public class ReveiverTest
public static void main(String[] args)
DatagramSocket ds = null;
try
// 1.创建DatagramSocket类型的对象并提供端口号
ds = new DatagramSocket(8888);
byte[] bArr = new byte[50];
// 2.创建DatagramPacket类型的对象并提供缓冲区
DatagramPacket dp = new DatagramPacket(bArr, bArr.length);
// 3.通过Socket接收数据内容存放到Packet中,调用receive方法
ds.receive(dp);
System.out.println("接收到的数据内容为" + new String(bArr, 0, dp.getLength()));
String ss = "我收到了";
byte[] bytes = ss.getBytes();
DatagramPacket dp2 = new DatagramPacket(bytes, bytes.length, dp.getAddress(), dp.getPort());
ds.send(dp2);
System.out.println("回复消息成功");
catch (IOException e)
e.printStackTrace();
finally
// 4.关闭Socket
if (null != ds)
ds.close();
- 发送方
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 发送方
*/
public class SendTest
public static void main(String[] args)
DatagramSocket ds = null;
try
// 1. 创建DatagramSocket类型的对象
ds = new DatagramSocket();
String s = "你好世界";
byte[] bytes = s.getBytes();
// 2.创建DatagramPacket类型的对象并提供接收方的通信地址
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(), 8888);
// 3.通过Socket将Packet中的数据内容发送出去,调用send方法
ds.send(dp);
byte[] bArr2 = new byte[50];
System.out.println("发送数据成功");
DatagramPacket dp2 = new DatagramPacket(bArr2, bArr2.length);
ds.receive(dp2);
System.out.println("回复消息接收成功,内容为:" + new String(bArr2, 0, dp2.getLength()));
catch (IOException e)
e.printStackTrace();
finally
// 4.关闭Socket
ds.close();
多线程方式代码
- 多线程
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ThreadsTest implements Runnable
@Override
public void run()
DatagramSocket ds = null;
try
ds = new DatagramSocket(8888);
byte[] bArr = new byte[50];
DatagramPacket dp = new DatagramPacket(bArr, bArr.length);
while (true)
// 3.通过Socket接收数据内容存放到Packet中,调用receive方法
ds.receive(dp);
System.out.println("接收到的数据内容为" + new String(bArr, 0, dp.getLength()));
String ss = "我收到了";
byte[] bytes = ss.getBytes();
DatagramPacket dp2 = new DatagramPacket(bytes, bytes.length, dp.getAddress(), dp.getPort());
ds.send(dp2);
System.out.println("回复消息成功");
catch (IOException e)
e.printStackTrace();
finally
if (null != ds)
ds.close();
- 接收方
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* 接收方
*/
public class ReveiverTest2
public static void main(String[] args)
ThreadsTest threadsTest = new ThreadsTest();
Thread thread = new Thread(threadsTest);
thread.start();
- 发送方(发送方代码复制多份即可表示多个发送方)
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 发送方
*/
public class SendTest1
public static void main(String[] args)
DatagramSocket ds = null;
try
// 1. 创建DatagramSocket类型的对象
ds = new DatagramSocket();
String s = "你好世界";
byte[] bytes = s.getBytes();
// 2.创建DatagramPacket类型的对象并提供接收方的通信地址
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(), 8888);
// 3.通过Socket将Packet中的数据内容发送出去,调用send方法
ds.send(dp);
byte[] bArr2 = new byte[50];
System.out.println("发送数据成功");
DatagramPacket dp2 = new DatagramPacket(bArr2, bArr2.length);
ds.receive(dp2);
System.out.println("回复消息接收成功,内容为:" + new String(bArr2, 0, dp2.getLength()));
catch (IOException e)
e.printStackTrace();
finally
// 4.关闭Socket
ds.close();
以上是关于UDP案例代码的主要内容,如果未能解决你的问题,请参考以下文章
FPGA教程案例66硬件开发板调试6——基于FPGA的UDP网口通信和数据传输