我跟著教程寫了一個簡單的檔案上傳程式,檔案上傳成功了,可是客戶端就是讀取不到服務器的回寫資料,求大佬幫看看是什么問題。代碼如下:
客戶端代碼:
package com.java.gy.day20.upload;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO 自動生成的方法存根
//1.創建本地位元組輸入流FileInputStream物件
FileInputStream fis = new FileInputStream("D:\\Resources\\123\\1.jpg");
//2.創建客戶端Socket物件
Socket socket = new Socket("127.0.0.1",8888);
//3.使用Socket物件的getOutputStream方法,創建網路輸出流OutputStream物件
OutputStream os = socket.getOutputStream();
//4.使用本地位元組輸入流FileInputStream物件的read方法,讀取本地檔案
//5.使用網路輸出流OutputStream物件的write方法,向服務器發送資料
int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes)) != -1) {
os.write(bytes, 0, len);
}
//6.使用Socket物件的getInputStream方法,創建網路輸入流InputStream物件
System.out.println("測驗1");
InputStream is = socket.getInputStream();
//7.使用網路輸入流InputStream物件的read方法,讀取服務器的回寫資料
while((len = is.read(bytes))!=-1) {
System.out.println(new String(bytes,0,len));
}
System.out.println("測驗3");
//8.釋放資源
fis.close();
socket.close();
}
服務器端代碼:
package com.java.gy.day20.upload;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
// TODO 自動生成的方法存根
//1.創建服務器端ServerSocket物件,并系結指定的埠號
ServerSocket server = new ServerSocket(8888);
//2.使用ServerSocket物件的accept方法,獲取請求的Socket物件
Socket socket = server.accept();
//3.創建FileOutputStream物件,并指定檔案在服務器上存盤的位置
FileOutputStream fos = new FileOutputStream("D:\\Resources\\新建檔案夾\\1.jpg");
//4.使用Socket物件的getInputStream方法,獲取網路輸入流InputStream物件
InputStream is = socket.getInputStream();
//5.使用網路輸入流InputStream物件的read方法,讀取客戶端傳送的資料
//6.使用FileOutputStream物件的write方法,將檔案寫入服務器的指定位置
int len = 0;
byte[] bytes = new byte[1024];
while((len=is.read(bytes))!=-1) {
//System.out.println(len);
fos.write(bytes, 0, len);
}
System.out.println("測驗2");
//7.使用Socket物件的getOutputStream方法,獲取網路輸出流OutputStream物件
OutputStream os = socket.getOutputStream();
//8.使用網路輸出流OutputStream物件的write方法向客戶端回寫資料"上傳成功"
os.write("上傳成功".getBytes());
//9.釋放資源
fos.close();
socket.close();
server.close();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270208.html
標籤:Java SE
上一篇:關于執行緒的問題
下一篇:請問下使用RocketMQ的朋友,現在開發專案主要用哪種封裝?Ali Cloud、原生還是Spring Boot?
