java socket实现文件夹的传输!这个程序哪里错了?

大普大普大普 大普大普大普 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
客户端
import java.io.*;
import java.net.*;

public class MyClient{
Socket client;
boolean flag = true;
FileInputStream fis;
DataOutputStream dos;
DataInputStream dis;

public static void main(String[] args){
new MyClient().ClientStart();
}

public void ClientStart(){
try{
client = new Socket("127.0.0.1",8888);
System.out.println("Connected");
dos = new DataOutputStream(client.getOutputStream());
dis = new DataInputStream(client.getInputStream());
transmit(new File("d:/javaA"));
String s = "00";
byte[]b = s.getBytes();
dos.write(b,0,s.length());
dos.flush();
}catch(IOException e){
System.out.println("Error");
}
}

public void transmit(File f)throws IOException{
byte[]b;
String ts;
int ti;
for(File f1:f.listFiles()){
if(f1.isDirectory()){
ts = "0f" + (f1.getPath().replace("d:/javaA",""));
b = ts.getBytes();
dos.write(b);
dos.flush();
dis.read();
transmit(f1);
}else{
fis = new FileInputStream(f1);
ts = "0c" + (f1.getPath().replace("d:/javaA",""));
b = ts.getBytes();
dos.write(b);
dos.flush();
dis.read();
b = new byte[10000];
while(fis.available() > 0){
ti = fis.read(b);
dos.write(b,0,ti);
dos.flush();
}
dos.close();
fis.close();
dis.close();
}
}
}
}

服务器端
import java.io.*;
import java.net.*;

public class MyServer{
ServerSocket server;
Socket client;
boolean flag = true;
DataInputStream dis;
DataOutputStream dos;
FileOutputStream fos;

public static void main(String[] args){
new MyServer().ServerStart();
}

public void ServerStart(){
try{
server = new ServerSocket(8888);
System.out.println("port : " + server.getLocalPort());
client = server.accept();
System.out.println("Connected");
dis = new DataInputStream(client.getInputStream());
dos = new DataOutputStream(client.getOutputStream());
String answer = "g";
byte[]ans = answer.getBytes();
byte[]b = new byte[1000];
int ti;
new File("e:/javaA").mkdirs();
while(flag){
ti = dis.read(b);
dos.write(ans);
String select = new String(b,0,ti);
if(select.contains("0f")){
File f = new File("e:/javaA" + (select.replace("0f","")));
System.out.println("create directory");
f.mkdirs();
}else if(select.contains("0c")){
fos = new FileOutputStream("e:/javaA" +(select.replace("0c",""))) ;
//String cs;
boolean flag = true;
int tip = dis.readInt();
dos.write(ans);
while(tip > 0){
ti = dis.read(b,0,(tip > 1000 ? 1000: tip));
tip = tip - ti;
//cs = new String(b,0,4);
fos.write(b,0,ti);
}
fos.flush();
fos.close();
dos.write(ans);

}else if(select.contains("00")){
flag = false;
}

}
dis.close();
client.close();
server.close();
}
catch(IOException e){
System.out.println("Error");
}
}
}
...全文
评论 3
收藏 已收藏
分享
返回顶部
大普大普大普
Java 51,407 成员 86,129 内容