javanbsp;发送字节流图片,c++接收二进…

2023-10-21 20:38

本文主要是介绍javanbsp;发送字节流图片,c++接收二进…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先在这里声明一个基础知识:
1.
提问:
java中char占几个字节?C和C++中char占几个字节?
答:
C/C++:char始终都是一个字节。
Java:因为是跨平台的,无论在哪里字符是用Unicode编码的,所以char是两个字节。

2.
在Windows和DOS系統中,狹義的文本文件是指擴展名為txt的文件。實際上,那些沒有規定格式的,由可理解的的ASCII以及其他編碼文字組成的文件都是文本文件,如C源程序文件,HTML超文本,XML。除此之外的其他文件都是二進制文件,如Word文件DOC,圖像格式文件JPG。

Android中拍到的照片一般都是byte[]data的字节流,

  Socket client = null;
  //String serverAddress="192.168.1.2";
  try 
  {
  //创建Socket,连接到服务器
  client = new Socket(serverAddress,9526);  
  OutputStream out =   client.getOutputStream(); 
  out.write(data,0,data.length);
  out.flush();
  out.close();
  client.close();     
  }
  catch (Exception e) 
  {
  // TODO: handle exception
  e.printStackTrace();
 
    }
通常的处理方式就是上传到服务器上去。之前做的服务器接收程序是java的,
Socket server = serverSocket.accept();
System.out.println("accept");
int length=0;
byte[] inputByte=new byte[1024];
//接收客户端发来的图片流
InputStream is=server.getInputStream();
FileOutputStream outStream = new FileOutputStream(new File("C:/socket_server/bin/hello.jpg"));//存放拍摄照片的路径
while((length=is.read(inputByte,0,inputByte.length))>0)
{
System.out.println(length);
outStream.write(inputByte,0,length);//将图片流写入到服务器的一个图像文件中去
outStream.flush();
}


所以,字节流传来的,我字节流读取就ok了,so easy。
这次遇到的问题是服务器接收程序是用c++写的,那么需要用 二进制保存的图片才可以打开!
SOCKET ss=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,NULL);
SOCKADDR_IN addr;
int len;
addr.sin_family=AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(9526);
len=sizeof(addr);

bind(ss , (PSOCKADDR)&addr , len);
listen(ss,5);

SOCKET sc=accept(ss,(PSOCKADDR)&addr,&len);
int length=0;
ofstream file;

file.open("file.jpg" ,ios::binary);

char buff2[1024];
int sum=0;
while((length=recv(sc,buff2,1024,0))>0)
{
sum+=length;
cout<<"length:"<<length<<endl;
file.write(buff2,length);//把字符串str1全部写到yyy.yyy中
ZeroMemory(buff2,1024);

}
cout<<sum<<endl;
file.close();

这篇关于javanbsp;发送字节流图片,c++接收二进…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/256822

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法