请问各位,如何用JAVA的socket技术进行文件和图片的传输?
首先根据文件名创建File对象。
然后根据File对象产生文件输入流对象。
建立Socket链接。
从Socket得到输出流对象。
建立一个byte[]数组作缓冲。
然后建立一个While循环,从输入流中读byte[]个缓冲的数据,然后写入输出流。
全部输出完毕。关闭输出输入流对象。
java中使用socket接收图片时如何确定接收图片的大小
先发一个包,是文件大小字节数,,,,,然后接收文件的数据
java 编写客户端 获取图片
package com;
import java.io.File;
import java.util.Iterator;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory;
import com.drew.metadata.exif.GpsDirectory;
import com.drew.metadata.jpeg.JpegDirectory;
public class Test {
public static void main(String[] args){
File jpegFile = new File(“F:/图片定位/DCIM/P20130116_125539.jpg”);
Metadata metadata;
try {
metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifDirectory.class);
Iterator tags1 = exif.getTagIterator();
while (tags1.hasNext()) {
Tag tag = (Tag)tags1.next();
System.out.println(tag);
}
Directory jpeg = metadata.getDirectory(JpegDirectory.class);
Iterator tags2 = jpeg.getTagIterator();
while (tags2.hasNext()) {
Tag tag = (Tag)tags2.next();
System.out.println(tag);
}
Directory gps = metadata.getDirectory(GpsDirectory.class);
Iterator tags3 = gps.getTagIterator();
while (tags3.hasNext()) {
Tag tag = (Tag)tags3.next();
System.out.println(tag);
}
} catch (JpegProcessingException e) {
e.printStackTrace();
}
}
}
java nio如何接收c++发过来的图片?socket我就知道
用SocketChanne从socket里读文件数据流,
用NIO的FileChannel从ByteBuffer里读缓存数据写入FileOutputStream:
private static void receiveFile(SocketChannel socketChannel, File file) throws IOException {
FileOutputStream fos = null;
FileChannel channel = null;
try {
fos = new FileOutputStream(file);
channel = fos.getChannel();
ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
int size = 0;
while ((size = socketChannel.read(buffer)) != -1) {
buffer.flip();
if (size 0) {
buffer.limit(size);
channel.write(buffer);
buffer.clear();
}
}
} finally {
try {
channel.close();
} catch(Exception ex) {}
try {
fos.close();
} catch(Exception ex) {}
}
}
java Socket传送多张图片
楼主的程序想实现怎样的功能呢?
服务器发送5张图片到客户端?
你的程序的发送端把5张图片合并到了一个输出流传给客户端,客户端没有办法把一个输入流中的数据分成5张图片。
接收端程序上的问题:
ByteArrayOutputStream bout=new ByteArrayOutputStream();和byte[] b=new byte[1024];都在循环外定义,在执行第一次循环时while((length=in.read(b))!=-1)这个循环把数据都读到了bout中,后面的循环都是(length=in.read(b))==-1的,不会再从输入流中读数据,而是直接使用第一次循环已经读出的数据,所以图片都是一样的。
请求大神帮助,java如何通过socket传送图片base64字符?
你不能再调一遍readLine了啊,第一遍和第二遍调用返回的是不一样的