//UDP协议简单实现-----Server
package UDP; import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer; public class UdpServer implements Runnable {
private int port; public UdpServer(int port) {
this.port = port;
} public void run() {
try {
// listening at port for udp request
DatagramSocket server = new DatagramSocket(new InetSocketAddress(port));
byte[] bs = new byte[4];
ByteBuffer bbuf = null;
DatagramPacket data = new DatagramPacket(bs, bs.length);
server.setSoTimeout(1000 * 10); // set timeout
while (true) { // 一直监听
server.receive(data);
bbuf = ByteBuffer.wrap(bs, 0, 4);
String s = "receive " + data.getData().length + " byte data,value: " + bbuf.getInt();
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
new Thread(new UdpServer(11111)).start();
}
}

//客户端实现;

package UDP;

    import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; public class UdpClient implements Runnable {
private int port; public UdpClient(int port) {
this.port = port;
} public void run() {
try {
DatagramSocket client = new DatagramSocket();
byte[] bs = new byte[4];
InetSocketAddress isa = new InetSocketAddress("localhost", port);
DatagramPacket data = new DatagramPacket(bs, bs.length);
data.setSocketAddress(isa);
for (int i = 0; i < 10; i++) {
data.setData(int2bytes(i));
client.send(data);
}
} catch (Exception e) {
e.printStackTrace();
}
} static byte[] int2bytes(int num) {
byte[] b = new byte[4];
for (int i = 0; i < 4; i++) {
b[i] = (byte) (num >>> (24 - i * 8));
}
return b;
}
}

//测试代码;

package UDP;

public class Test {
public static void main(String[] args) throws InterruptedException {
int port = 11111;
try{
new Thread(new UdpServer(port)).start();
new Thread(new UdpClient(port)).start();
}catch(Exception e){
//e.printStackTrace();
}
}
}

java,UDP协议简单实现的更多相关文章

  1. Java UDP的简单实例以及知识点简述

    UDP的实现 Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类. 其与TCP协议实现不同的是: UDP的套接字DatagramSoc ...

  2. UDP协议----简单的CS模型实现

    UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺 ...

  3. Java UDP通信简单实现

    1.Java实现方式 1)server端 /** * UDPserver端 * */ public class UdpServer { // 定义一些常量 private final intMAX_L ...

  4. java udp协议DatagramSocket类使用

    package com.temp; import org.junit.Test; import java.io.*; import java.net.DatagramPacket; import ja ...

  5. 通过socket和Udp协议简单实现一个群体聊天工具(控制台)

    编写一个聊天程序.有收数据的部分 和 发数据的部分.这两个部分需要同时执行,这就用到多线程技术,一个线程负责收,一个现象负责发. 因为收和发动作是不一致的,所以要定义两个run方法而且这两个方法要封装 ...

  6. UDP协议总结

    我们已经讲解了物理层.连接层和网络层.最开始的连接层协议种类繁多(Ethernet.Wifi.ARP等等).到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系).进入到传输层(trans ...

  7. udp协议以及socketserver

    udb协议 udb协议也是一种协议,它和tcp相比既有缺点也有优点 udb协议所发送的数据可以理解为自带报头,所以他不会出现粘包的情况.但是udp数据只管发送而不管接收,也就是说udp会出现丢包的情况 ...

  8. (转)协议森林07 傀儡 (UDP协议)

    协议森林07 傀儡 (UDP协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经讲解了物理层.连接层和网络层.最开始的 ...

  9. Java中UDP协议的基本原理和简单用法

    UDP协议是非面向连接的,相对于TCP协议效率较高,但是不安全.UDP协议类似发信息的过程,不管接收方是在线还是关机状态,都会把信息发送出去.但是如果接收方不处于接收信息的状态,发送出去的数据包就会丢 ...

随机推荐

  1. 批发网加盟页面轮播Jquery jcarousellite插件效果

    Jquery jcarousellite 插件的好处 其中: 参数说明: btnPrev     string 上一个按钮的class名, 比如  btnPrev: ".prev" ...

  2. 网站性能优化之CSS无图片技术:三角形

    1.使用CSS无图片技术,可以总结得到以下三个优点: 减少请求资源的大小: 减少http的请求个数: 提高可维护性. 一.CSS无图片技术,微博中有哪些实际应用呢? 通过上面的展示,我们可以看到,无图 ...

  3. torch基本命令

    命令行输入th进入torch框架 命令行输入th + lua文件表示用torch执行lua文件

  4. ie兼容整理

    那里面有东西要长研究 ie bug集合关于如何给各种浏览器打bug,可查询:browser hacks 几篇处理ie问题的帖子,帖子1

  5. 2016年10月13日 星期四 --出埃及记 Exodus 18:24

    2016年10月13日 星期四 --出埃及记 Exodus 18:24 Moses listened to his father-in-law and did everything he said.于 ...

  6. 有关Duilib的博客(持续更新)

    1.转载:http://blog.csdn.net/LostSpeed/article/category/1896505 2.支持多线程和动画 转载:http://blog.csdn.net/Skil ...

  7. UVA 12050 - Palindrome Numbers 模拟

    题目大意:给出i,输出第i个镜像数,不能有前导0. 题解:从外层开始模拟 #include <stdio.h> int p(int x) { int sum, i; ;i<=x;i+ ...

  8. UVA10339 Watching Watches

    题目大意:有两个表,每天都会慢一点时间,给出每天慢得秒数,问下一次重合的时刻. 解题思路:时刻重合也就是说整整差了一周,一周是12小时,用12小时的秒数除以两个表的相差那就是需要多少天的时间后重合,知 ...

  9. ①创建项目testpackage ②在pack2.B中添加方法f ③在类A中添加如下三个成员变量:int型的私有变量i float型的变量f double型的公有变量d 在pack1.B的main方法中为对象a的成员变量f和d分别赋值为2和3 在pack2.C的main方法中为对象a的成员变量d赋值为3

    package pack1; public class A { private int i; float f; public double d; public float getF() { retur ...

  10. uTenux——LED驱动讲解

    LED驱动讲解,对于一个嵌入式的工程师还是一个刚开是学习相关电子设计的朋友,对于LED的驱动问题应该不甚陌生.我所说的LED驱动并不是类似大功率LED照明的那个驱动,而是简单的控制器对LED的控制驱动 ...