2011-03-10 123 views
5

即時通訊新的JAVA,所以請容易在EM上。從客戶端發送圖像到服務器

我有一個服務器和客戶端,可以成功地連接到對方和其他的東西,但1客戶端的功能是發送圖像到服務器。可以提供任何人的代碼(在Java中,而不是一個網絡應用程序)。

+0

我明白這不是網絡應用程序。或者是? – 2011-03-10 08:33:56

+0

我想要java代碼 – 2011-03-10 08:36:55

+0

你有什麼樣的客戶端/服務器?一個網絡服務器? ApplicationServer的?自寫?安裝?更多信息請見。 – 2011-03-10 08:38:44

回答

5

歡迎來到Java!

要完成您的任務,您可以使用套接字。

客戶端代碼:

function sendFile (String serverIp, int serverPort) { 
    int i; 
    FileInputStream fis = new FileInputStream ("/path/to/your/image.jpg"); 

    Socket sock = new Socket(serverIp, serverPort); 
    DataOutputStream os = new DataOutputStream(sock.getOutputStream()); 
    while ((i = fis.read()) > -1) 
     os.write(i); 

    fis.close(); 
    os.close(); 
    sock.close(); 
} 

服務器代碼:您在客戶端調用SENDFILE()之前

function listenForFile(int port) { 
    ServerSocket socket = new ServerSocket(serverPort); 
     while (true) { 

      Socket clientSocket = socket.accept(); 

      DataInputStream dis = new DataInputStream(clientSocket.getInputStream()); 
      FileOutputStream fout = new FileOutputStream("/path/to/store/image.jpg"); 
      int i; 
      while ((i = dis.read()) > -1) { 
       fout.write(i); 
      } 

      fout.flush(); 
      fout.close(); 
      dis.close(); 
      clientSocket.close(); 
     } 
} 

注意服務器方法listenForFile()必須被調用。而且,serverPort在兩端必須相同。

+0

對不起,此代碼無法正常工作。它將圖片從客戶端發送到服務器,但在服務器系統中無法看到 – 2011-03-10 09:29:09

+0

將其包裝在BufferedOutputStream/BufferedInputStream中以獲得更好的性能。 – Milde 2011-03-10 10:08:16

+0

自寫服務器 – 2011-03-10 11:02:56

相關問題