我正在通过套接字在两台计算机之间传输文件。一切似乎都正常,但是当我查看检索到的文件的内容时,它是空的。我究竟做错了什么?
这是我的服务器端代码。文件 foobar.txt 存在,其内容是“hello world!”。
try{
ServerSocket ssock = new ServerSocket(12345);
Socket sock = ssock.accept();
//here I get the filename from the client, but that works fine.
File myFile = new File("foobar.txt");
byte[] mybytearray = new byte[(int) myFile.length()];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
OutputStream os = sock.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
sock.close();
} catch (Exception e){
e.printStackTrace();
}
这是我的客户代码:
try {
Socket socket = new Socket(host, port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.print("get foobar.txt\r\n");
out.flush();
byte[] streamIn = new byte[1024];
InputStream in = socket.getInputStream();
FileOutputStream file_src = new FileOutputStream("foobar.txt");
BufferedOutputStream file_writer = new BufferedOutputStream(file_src);
int i;
while ((i = in.read()) != -1) {
file_writer.write(i);
}
file_writer.flush();
file_writer.close();
file_src.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
解决了
由于我使用多个线程和多个套接字并在一台机器上测试所有连接,我只是遇到了一个问题,即客户端(其中包含客户端和服务器代码)将与其自身而不是另一个客户端连接。为不同的运行客户端更改文件传输端口使这一切正常工作。感谢所有看过这个并给我一些建议的人。