socket传输图片问题
从服务器端传送一张图片到客户端(这里用的是jpg),奇怪的是有时候传送成功,有时候传送失败.我所用的方法是把图片的字节流传过去,可是无论是分批传还是一次性传输(图片大小在80K左右),问题总是存在.
服务器端主要代码 C++
// transfer image start with <IMAGE>
inImage.open((dir+filename+".jpg").c_str(),fstream::binary);
CNetwork::Send(clientSocket,"<IMAGE>\n",strlen("<IMAGE>\n"));
int length; // clientSocket 为客户端套接字
char * buffer;
// get length of file:
inImage.seekg (0, ios::end);
length = inImage.tellg();
inImage.seekg (0, ios::beg);
// allocate memory:
buffer = new char [length];
// read data as a block:
inImage.read(buffer,length);
CNetwork::Send(clientSocket, buffer, length);
inImage.close();
delete [] buffer;
客户端主要代码 Java
server = new Socket(host,port);
// get input stream
InputStream inn = server.getInputStream();
BufferedReader bufIn = new BufferedReader(new InputStreamReader(inn));
// get ouput stream
PrintWriter out = new PrintWriter(server.getOutputStream());
// send the name of the file which we need to server
out.write(filename.toCharArray(),0,filename.length());
out.flush();
String line; //
while ((line = bufIn.readLine()) != null) {
if (line.equals("<FILE>"))
fileTransfer(bufIn);
else if (line.equals("<IMAGE>")){
bufImage = imageTransfer();
break;
}
}
public BufferedImage imageTransfer() throws IOException{
BufferedImage image=null;
// get input stream
ImageInputStream stream = ImageIO.createImageInputStream(
server.getInputStream());//server为连接的socket
image = ImageIO.read(stream);
ImageIO.write(image,"jpg",new File(filename+".jpg"));
return image;
}