java 发送字节流图片,c++接收二进…
2014-09-25 13:29
399 查看
首先在这里声明一个基础知识:
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();
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();
相关文章推荐
- java&nbsp;发送字节流图片,c++接收二进…
- java 发送字节流图片,c++接收二进制流
- java&nbsp;JDBC实验题【实验题4&nbsp;图片的…
- javamail 邮件发送
- 黑马程序员java 图片添加水印
- 图片发送到后台,java接收
- java发送https post请求实例
- java在spring mvc中的图片接收与发送处理
- c++和java在socket通信过程中发送和接收函数的问题
- 南京Java培训:与C++相比 Java拥有诸多亮点
- c++中实现类似java printStackTrac…
- 数据通信之数据转码字节映射加密发送:客户端c++和服务器java
- 自己的路 自己把握 C++ 、Java 、C…
- java发送接收UDP数据包:字符串,byte[]字节数组,文件等
- Java Swing 中插入图片背景
- 数据通信之数据转码字节映射加密发送:客户端c++和服务器java
- 黑马程序员java 图片添加水印
- java&nbsp;文件打开图片并显示的界面和…
- C++和java通过Socket批量发送和接收文件(C++客户端发送,java服务端接收)
- java apache mina 2.0 发送和接收 字节数组 byte[]