如题所示,我想用java,通过socket实现客服端像服务器端循环的传输图片,在服务器端能够正确的获取每张图片。现在我已经实现了单张传输,也可以正常的在服务器端接收了。但是当我在客服端循环不停的发送时,服务器端就没法正常的接收,图片一直只有一张,在不停的增大,相当于全部累计在一个图片文件上面去了。该怎么正确的把客服端发送的图片分割开来,存为不同的图片呢?
我在网上查了很多相关的资料,说自定义分隔符,在服务器端根据分隔符区分;或者先发送个图片的大小再发送图片文件,在服务器端通过大小来区分。但是我在服务器端怎么才能区分获取得到的就是分隔符,或者是图片的大小呢?客服端在不停的循环发送,服务器端在循环的接收。
希望做过这方面编程的人提供帮助。最好能够有代码,因为原理我已经查了很多很多了。谢谢!
------最佳解决方案--------------------
package net;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class DataSocketServer {
final public static int DEFAULT_PORT = 4848;
final public static String FILE_DIR = "D:/";
public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(DEFAULT_PORT);
while (true) {
new Thread(new RequestProcessorTask(server.accept())).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
static class RequestProcessorTask implements Runnable {
private Socket socket = null;
public RequestProcessorTask(Socket socket) {
this.socket = socket;
}
public void run() {
try {
boolean isEnd = false;
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
while (!isEnd) {
int d = -1;
StringBuilder header = new StringBuilder();
while ((d = in.read()) != '\r') {
if (d == -1) {
isEnd = true;