java实现两台计算机的互联,如何用Java语言实现两台计算机之间的文件传输?
最近新學習了Java語言,算是一個小白,想用TCP Socket進行網絡編程,使得服務器端接受客戶端的文件,但是遇到了一個錯誤,有人知道該怎么解決嗎?
//這是服務器端的代碼
public class UploadServer {
public static void main(String[] args) {
System.out.println("服務器端運行...");
try {
//創建一個ServerSocket監聽8080端口的客戶端請求
ServerSocket serverSocket = new ServerSocket(8080);
//使用accept()阻塞當前線程,等待客戶端請求
Socket socket = serverSocket.accept();
//由Socket獲得輸入流,并創建緩沖輸入流
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
//由文件輸出流創建緩沖輸出流
FileOutputStream out = new FileOutputStream("G:\站點\新建文本文檔.txt");
//創建一個緩沖區
byte[] buffer = new byte[1024];
//首次向Socket讀取數據
int len = in.read(buffer);
while (len != -1) {
//寫入數據到文件
out.write(buffer, 0, len);
//再次從Socket讀取數據
len = in.read(buffer);
}
System.out.println("接收完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
//這是客戶端的代碼
public class UploadClient {
public static void main(String[] args) {
System.out.println("客戶端運行...");
try {
//向非本機的8080客戶端發出請求
Socket socket = new Socket("192.168.0.106",8080);
//由Socket獲得輸出流,并創建緩沖輸出流
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
//創建文件輸入流
FileInputStream fin = new FileInputStream("F:\站點\新建文本文檔.txt");
//由文件輸入流創建緩沖輸出流
BufferedInputStream in = new BufferedInputStream(fin);
//準備一個緩沖區
byte[] buffer = new byte[1024];
//首次讀取文件
int len = in.read(buffer);
while(len != -1) {
//數據寫入Socket
out.write(buffer,0,len);
//再次讀取文件
len = in.read(buffer);
}
System.out.println("上傳成功!");
} catch(ConnectException e) {
System.out.println("服務器未啟動!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
先運行服務器端,在運行客戶端
客戶端顯示:
服務器端顯示:
服務器端的第27行是 int len = in.read(buffer);
該如何處理這個異常呢,求解!!!
回答
客戶端傳輸完成后關閉輸出流
總結
以上是生活随笔為你收集整理的java实现两台计算机的互联,如何用Java语言实现两台计算机之间的文件传输?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flink随笔(1)
- 下一篇: java中字典算法_Java字典生成算法