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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<