【发布时间】:2014-04-30 08:07:58
【问题描述】:
我正在尝试使用中间服务器将文件从一个客户端 1 发送到另一个客户端 2。客户端 1 和客户端 2 都通过网络连接到服务器。为此,我为两个客户端提供了服务器的 IP 地址。 但是由于我的代码中的一些错误,我无法正确传输文件。我正在使用以下代码并且它不起作用,并且在客户端 2(接收器)端,创建的文件是空的。 请在我的代码中找到可能的错误。
服务器代码
`
import java.net.*;
import java.io.*;
public class S1 {
public static void main(String[] args) {
try{
ServerSocket sc1=new ServerSocket(6988);
Socket c1=sc1.accept();
Socket c2=sc1.accept();
DataInputStream dis=new DataInputStream(c1.getInputStream());
int m=c1.getInputStream().available();
byte b2[]=new byte[m];
dis.read(b2);
DataOutputStream dos=new DataOutputStream(c2.getOutputStream());
dos.write(b2);
dos.flush();
dos.close();
}
catch(Exception e){}
}
}
客户端 1(发件人)
import java.io.*;
import java.net.*;
public class C11 {
public static void main(String[] args) {
try{
Socket c2=new Socket("127.0.0.1",6988);
FileInputStream fis=new FileInputStream("f:/abc.jpg");
File f1=new File("f:/abc.jpg");
long l1=f1.length();
int a=(int)l1;
byte b1[]=new byte[a];
DataInputStream dis=new DataInputStream(fis);
dis.read(b1);
DataOutputStream dout=new DataOutputStream(c2.getOutputStream());
dout.write(b1);
}
catch(Exception e){}
}
}
客户端 2(接收方)
import java.io.*;
import java.net.*;
public class C22 {
public static void main(String[] args) {
try{
Socket c2=new Socket("127.0.0.1",6988);
DataInputStream dis=new DataInputStream(c2.getInputStream());
int m=c2.getInputStream().available();
byte b2[]=new byte[m];
dis.read(b2);
FileOutputStream fout=new FileOutputStream("E:\\PRACTICE\\xyz.txt");
DataOutputStream dos=new DataOutputStream(fout);
dos.write(b2);
dos.close();
}
catch(Exception e){}
}
}
【问题讨论】:
-
你有什么错误吗?
-
@Rahul 不,但代码没有按照我的要求工作。
-
您不知道自己是否收到错误,因为您忽略了任何异常。至少在所有
catch块中调用e.printStackTrace()。
标签: java file networking transfer