我想製作一個java服務器,將圖像存儲在數據庫中的Android設備。java tcp服務器到android設備
現在我試圖用簡單的圖像存儲在硬盤上供服務器發送。
我的問題是我可以通過TCP套接字發送圖像從java服務器作爲字節數組到android。
我想製作一個java服務器,將圖像存儲在數據庫中的Android設備。java tcp服務器到android設備
現在我試圖用簡單的圖像存儲在硬盤上供服務器發送。
我的問題是我可以通過TCP套接字發送圖像從java服務器作爲字節數組到android。
是的,你可以使用TCP套接字。
以字節讀取文件並以字節形式發送,不要嘗試將其加載爲BufferedImage。
然後,在接收端,使用允許您從字節數組中加載圖像的函數。
當然,你可以,但你需要爲此創造你自己的協議。您可能會發現使用HTTP多,無論是建立一個網絡服務器如Tomcat與應用程序部署在那裏,或使用嵌入類似碼頭的東西
The fastest and easiest approach for sending image is as follows...
Try this
// Server Side code for image sending
ServerSocket servsock = new ServerSocket(13250);
System.out.println("Main Waiting...");
Socket sock = servsock.accept();
System.out.println("Accepted connection : " + sock);
File myFile = new File ("\sdcard\ab.jpg");
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);*/
byte [] mybytearray =new byte[count];
System.arraycopy(Copy, 0, mybytearray, 0, count);
OutputStream os = sock.getOutputStream();
System.out.println("Sending...");
os.write(mybytearray,0,mybytearray.length);
os.flush();
os.close();
sock.close();
servsock.close();
//Client side code for image reception
try
{
int filesize=6022386; // filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current = 0;
// localhost for testing
ServerSocket servsocket = new ServerSocket(13267);
System.out.println("Thread Waiting...");
Socket socket = servsocket.accept();
System.out.println("Accepted connection : " + socket);
System.out.println("Connecting...");
File f=new File("\sdcard\ab.jpg");
f.createNewFile();
// receive file
byte [] mybytearray = new byte [filesize];
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream(f);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
do {
bytesRead =
is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);
count=current;
Copy=mybytearray.clone();
bos.write(mybytearray, 0 , current);
bos.flush();
long end = System.currentTimeMillis();
System.out.println(end-start);
bos.close();
fos.close();
socket.close();
servsocket.close();
}
} catch(IOException e)
{
System.out.println("errorr");
}
是完整的代碼,因爲它給了我很多錯誤 – 2013-03-22 18:23:13
錯誤:mybytearray在服務器代碼中聲明瞭兩次。有一個無與倫比的* /。 – greenapps 2013-03-22 20:31:03
我試圖讀取服務器端的圖像作爲緩衝圖像,然後將其轉換爲字節數組併發送。我不知道如何在Android客戶端接收它並將其顯示在ImageView上。 – 2013-03-22 17:49:01
查看更新。雖然我不熟悉android API。 – Joni 2013-03-22 17:56:28