//Udp实现消息的发送和接收

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.util.Scanner; public class UdpUtils implements Runnable { //定义Socket数据包服务
private DatagramSocket socket; public UdpUtils(int port) {
try {
//创建socket数据包服务
socket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
} //发送
public void send(String content, String ip, int port) {
//获取接收端 的IP 和 端口号
InetSocketAddress address = new InetSocketAddress(ip, port);
//创建数据包 并将 消息内容 、地址 传入
DatagramPacket dp = new DatagramPacket(content.getBytes(),
content.getBytes().length,address);
try {
//发送数据包
socket.send(dp);
try {
Thread.sleep(1); //防止Udp传输时,包错误。
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
} //接收
@Override
public void run() {
byte[] buf = new byte[1024];
//创建数据包 将 发送过来的 消息内容 取出
DatagramPacket dp = new DatagramPacket(buf, buf.length);
while (true) {
try {
//接收数据包
socket.receive(dp);
// System.out.println(new String(dp.getData(), 0, dp.getLength()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
} //Test 测试
class TestUdpUtils{
public static void main(String[] args) {
UdpUtils utils = new UdpUtils(10010);
Thread thread = new Thread(utils);
thread.start();
Scanner input = new Scanner(System.in);
while(true){
String msg = input.next();
if(msg.equals("exit")){
input.close();
System.exit(0);
}
utils.send("Send:" + msg, "127.0.0.1", 10010);
}
}
}

//Udp实现图片的上传

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException; public class UdpMapUtils implements Runnable { private DatagramSocket socket;
private File file;
private String ip;
private int port; public UdpMapUtils(File file, String ip, int port) {
this.file = file;
this.ip = ip;
this.port = port;
try {
socket = new DatagramSocket(port);
} catch (SocketException e) {
e.printStackTrace();
}
} public void send(File file) { InetSocketAddress address = new InetSocketAddress(ip, port);
// System.out.println(address);
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[1024];
while (bis.read(buf) != -1) {
DatagramPacket dp = new DatagramPacket(buf, buf.length, address);
socket.send(dp);
Thread.sleep(2);
}
byte[] b = "over".getBytes();
DatagramPacket dp = new DatagramPacket(b, b.length,address);
socket.send(dp);
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
socket.close();
}
} @Override
public void run() { BufferedOutputStream bos = null; try {
bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] buf = new byte[1024];
while (true) {
DatagramPacket dp = new DatagramPacket(buf, buf.length);
socket.receive(dp);
if(new String(buf,0,dp.getLength()).equals("over"))
break;
bos.write(buf);
bos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
socket.close();
}
}
}

Udp实现消息的发送和接收、以及图片的上传的更多相关文章

  1. 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收

    前言:上一篇文章 只是 RabbitMQ 的科普,本文将仔细分析 Cinder 中 RabbitMQ 的各组件的使用.消息的发送和接收等.由于各流程步骤很多,本文只会使用若干流程图来加以阐述,尽量做到 ...

  2. Queue 消息的发送与接收(PTP 消息传递模型)

    上篇博客写到了JMS两种消息模型(P2P.pub/sub)<JMS两种消息模型>.本篇博客通过一个实例来进一步了解P2P模型. Queue消息的发送与接收--PTP消息传递模型,样例: Q ...

  3. 项目总结22:Java UDP Socket数据的发送和接收

    项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...

  4. nodejs 数据库操作,消息的发送和接收,模拟同步

    var deasync = require('deasync'); //导入模板 var mysql=require('mysql'); var Stomp = require('stompjs'); ...

  5. msgrcv,msgsnd进程通信,消息的发送和接收

    //进程通信,消息的发送和接收 //client.c #include <unistd.h> #include <sys/types.h> #include <sys/s ...

  6. 【Spring Boot】Spring Boot之整合RabbitMQ并实现消息的发送和接收

    一.项目配置 1)引入maven坐标 <!--amqp--> <dependency> <groupId>org.springframework.boot</ ...

  7. 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收

    消费者:接收消息 逻辑:创建连接-->创建channel-->创建交换机-->创建队列-->绑定交换机/队列/路由键-->接收消息 <?php /********* ...

  8. 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)

    1.首先是rabbitmq的配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...

  9. RabbitMQ消息确认(发送确认,接收确认)

    前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题. 下面是几个问题: 1.为什么要进行消息确认? 2.rabbitmq消息确认 机制是什么样的? 3.发送方如何确认消息发送成功? ...

随机推荐

  1. Spring Mvc 用Demo去学习

    1:首先大体知道 SpringMVC 框架的 运行原理(图片来自网络 ) 2:SpringMVC 是依照DispatcherServlet 展开的 这里可以约Structs2对比,structs2 是 ...

  2. My "Top 5 R Functions"(转)

    In preparation for a R Workgroup meeting, I started thinking about what would be my "Top 5 R Fu ...

  3. 2017-5-29 Excel VBA 小游戏

    ---恢复内容开始--- 转一个Excel VBA的小游戏,最近对excel有了更深入的了解,功能很强大,也刷新了我对待事情的态度. 一.准备界面 我们先来把游戏界面准备好,选中前4行,行高调成50, ...

  4. 东正王增涛浅析OA信息化整合平台系统在企业中的应用价值

    王增涛说OA信息化整合平台系统作为企业管理中最基础的管理软件,已在企业成长道路上存在多年,它的应用开启了智能移动办公的先河,也让企业的办公流程管理更加的便捷.高效.流畅.省时.省力,它的使用不但让企业 ...

  5. (原创)Maven+Spring+CXF+Tomcat7 简单例子实现webservice

    这个例子需要建三个Maven项目,其中一个为父项目,另外两个为子项目 首先,建立父项目testParent,选择quickstart: 输入项目名称和模块名称,然后创建: 然后建立子项目testInt ...

  6. 记一次利用AutoMapper优化项目中数据层到业务层的数据传递过程。

    目前项目中获取到DataSet数据后用下面这种方式复制数据. List<AgreementDoc> list = new List<AgreementDoc>(); ].Row ...

  7. HTMLCollection 对象详解,以及为什么循环获取的dom合集操作可能会出现下标不正确的情况?

    有时候循环dom合集,然后操作其中的某些dom之后,发现下标不正确了 比如我们要删除一个dom合集的时候: var selectDom = document.getElementsByClassNam ...

  8. Linux命令不熟悉(记录)

    1.回到上一次操作的目录 cd - 2.rz打开上传文件 rz 3.下载某个文件 wget httpdownload 4.根据名字查找文件 find / -name mysql 5.通配符删除 rm ...

  9. 织梦DedeCMS调用二级子栏目或者多级栏目的方法

    图2 当前栏目typeid值为3,所以代码如下: {dede:channelartlist typeid='3,3'} <a href="{dede:field name='typeu ...

  10. 新增article注意事项

    默认情况下在日志复制中如果新增加Article那么需要产生一个包含所有Article的Snapshot.由于产生Snapshot会加锁,同时会产生IO操作,所以对于大的数据库性能影响是很大的. 可以通 ...