1
你好,我正在嘗試做一個小型客戶端文件服務器應用程序,其中可以傳輸任何類型的文件,包括(.txt,.JPEG,.docx,.mp3和.wma)。到目前爲止,我只能隨意進行轉移。大多數情況下文件不被傳輸;只有圖像打印在客戶端路徑上。文件傳輸陷入做while循環
在我看來,該文件卡在do while循環中。請幫我解決這個問題。
服務器部分:
// create socket
ServerSocket serversock = new ServerSocket(444);
while (true) {
System.out.println("Waiting for client to connect...");
Socket welcomesock = serversock.accept();
System.out.println("Client has connected from: " + welcomesock.getInetAddress().getHostAddress());
File myFile = new File ("C:\\temp\\New Stories.wma");
if(!myFile.exists()){
System.out.println("Filename does not exist");
welcomesock.close();
}
else{
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = welcomesock.getOutputStream();
System.out.println("Sending file");
os.write(mybytearray,0,mybytearray.length);
os.flush();
os.close();
}
}</i>
客戶端部分:
,而(真){
int bytesRead;
int currentlength = 0;
int fsize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
// Creates the Client socket and binds to the server
Socket clientSocket = null;
try {
clientSocket = new Socket(127.0.0.1, 444);
} catch (UnknownHostException e) {
e.printStackTrace();
}
byte [] bytearray = new byte [fsize];
InputStream is = clientSocket.getInputStream();
FileOutputStream fos = new FileOutputStream("D:\\New Stories.wma");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(bytearray,0,bytearray.length);
currentlength = bytesRead;
do {
bytesRead = is.read(bytearray, currentlength, (bytearray.length-currentlength));
if(bytesRead >= 0) currentlength += bytesRead;
} while(bytesRead > -1);
bos.write(bytearray, 0 , currentlength);
bos.flush();
long end = System.currentTimeMillis();
System.out.println(end-start);
bos.close();
clientSocket.close();
}
確定會看到它,但是當我嘗試下載...文件似乎增加到其實際大小...但是,一旦我終止程序...文件大小爲零.. – Micheal
其工作兄弟..好的兄弟會打勾你的回答:) – Micheal