Udp实现消息的发送和接收、以及图片的上传
//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实现消息的发送和接收、以及图片的上传的更多相关文章
- 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收
前言:上一篇文章 只是 RabbitMQ 的科普,本文将仔细分析 Cinder 中 RabbitMQ 的各组件的使用.消息的发送和接收等.由于各流程步骤很多,本文只会使用若干流程图来加以阐述,尽量做到 ...
- Queue 消息的发送与接收(PTP 消息传递模型)
上篇博客写到了JMS两种消息模型(P2P.pub/sub)<JMS两种消息模型>.本篇博客通过一个实例来进一步了解P2P模型. Queue消息的发送与接收--PTP消息传递模型,样例: Q ...
- 项目总结22:Java UDP Socket数据的发送和接收
项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...
- nodejs 数据库操作,消息的发送和接收,模拟同步
var deasync = require('deasync'); //导入模板 var mysql=require('mysql'); var Stomp = require('stompjs'); ...
- msgrcv,msgsnd进程通信,消息的发送和接收
//进程通信,消息的发送和接收 //client.c #include <unistd.h> #include <sys/types.h> #include <sys/s ...
- 【Spring Boot】Spring Boot之整合RabbitMQ并实现消息的发送和接收
一.项目配置 1)引入maven坐标 <!--amqp--> <dependency> <groupId>org.springframework.boot</ ...
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
消费者:接收消息 逻辑:创建连接-->创建channel-->创建交换机-->创建队列-->绑定交换机/队列/路由键-->接收消息 <?php /********* ...
- 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)
1.首先是rabbitmq的配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...
- RabbitMQ消息确认(发送确认,接收确认)
前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题. 下面是几个问题: 1.为什么要进行消息确认? 2.rabbitmq消息确认 机制是什么样的? 3.发送方如何确认消息发送成功? ...
随机推荐
- Linux与mv命令结合,移动文件至指定目录
转自:http://blog.csdn.net/hardwin/article/details/7711635 把当前目录下面的file(不包括目录),移动到/opt/shell find . - ...
- day5_ 导入模块和包
######################模块导入模块做的事1.产生新的名称空间2.以新建的名称空间为全局名称空间,执行文件的代码3.拿到一个模块名spam,指向spam.py产生的名称空间 imp ...
- 全景智慧城市——VR全景,开启VR营销新时代
全景是一种新兴的富媒体技术. 与视频.声音.图片等传统主流媒体最大的区别是"可操作,可交互". 全景给人以三维立体感觉的实景360°全方位图像,此图像最大的三个特点: 全方位:展示 ...
- nodejs - 守护进程 supervisor
1. 安装 npm -g install supervisor 2. 如果使用了expres框架 需要修改启动方式 到 package.json中的 "scripts&quo ...
- Coursera 机器学习笔记(二)
主要为第三周课程内容:逻辑回归与正则化 逻辑回归(Logistic Regression) 一.逻辑回归模型引入 分类问题是指尝试预测的是结果是否属于某一个类. 维基百科的定义为:根据已知训练区提供的 ...
- 深入理解AngularJs-scope(一)
进入正文前的说明:本文中的示例代码并非AngularJs源码,而是来自书籍<<Build Your Own AngularJs>>, 这本书的作者仅依赖jquery和lodas ...
- vue-cli创建自己的项目
vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一. ...
- 学习总结------Servlet控制器的简单运用
前言: 今天将简单的模拟 MVC模式 对Servlet控制器运行 若有不好或不对的地方,欢迎各位大神进行指导! 1.MVC模式(图) MVC全名是Model View Controller,是模型(m ...
- python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片
首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...
- ubuntu16.04-x64系统中Jexus web server部署.NetCore和端口分析引发的猜想!
您有这样的牢骚么? 有一周没更新博客了,简单说下在干什么吧:主要是公司安排对接某旅游大公司的接口,接口数量倒也就10个左右,对接完后还需要加入到业务系统中和App端,因此还是需要花点时间的:时间上来说 ...