java tcp服务器到android设备

问题描述:

我想制作一个java服务器,将图像存储在数据库中的Android设备。java tcp服务器到android设备

现在我试图用简单的图像存储在硬盘上供服务器发送。

我的问题是我可以通过TCP套接字发送图像从java服务器作为字节数组到android。

是的,你可以使用TCP套接字。

以字节读取文件并以字节形式发送,不要尝试将其加载为BufferedImage。

然后,在接收端,使用允许您从字节数组中加载图像的函数。

+0

我试图读取服务器端的图像作为缓冲图像,然后将其转换为字节数组并发送。我不知道如何在Android客户端接收它并将其显示在ImageView上。 – 2013-03-22 17:49:01

+0

查看更新。虽然我不熟悉android API。 – Joni 2013-03-22 17:56:28

当然,你可以,但你需要为此创造你自己的协议。您可能会发现使用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"); 
} 
+0

是完整的代码,因为它给了我很多错误 – 2013-03-22 18:23:13

+0

错误:mybytearray在服务器代码中声明了两次。有一个无与伦比的* /。 – greenapps 2013-03-22 20:31:03