-2
嗨我從兩個Android設備之間的服務器套接字傳輸到客戶端套接字的圖像。我得到的圖像,但它是在size.here 0字節是我的代碼如何從android中的套接字獲取完整圖像?
發件人:
// LISTEN FOR INCOMING CLIENTS
Socket client = serverSocket.accept();
File myFile = new File("/sdcard/DCIM/d.png");
byte [] mybytearray = new byte[(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = client.getOutputStream();
serverStatus.setText("sending...");
os.write(mybytearray,0,mybytearray.length);
os.flush();
client.close();
handler.post(new Runnable() {
@Override
public void run() {
serverStatus.setText("Connected.");
}
});
接收器:
public void run() {
try {
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
Log.d("ClientActivity", "C: Connecting...");
Socket socket = new Socket(serverAddr, ServerActivity.SERVERPORT);
connected = true;
byte[] mybytearray = new byte[filesize];
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream("/sdcard/j.png");
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 > 0);
bos.write(mybytearray,0,current);
bos.flush();
long end = System.currentTimeMillis();
System.out.println(end-start);
bos.close();
socket.close();
while (connected) {
try {
Log.d("ClientActivity", "C: Sending command.");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream())), true);
// WHERE YOU ISSUE THE COMMANDS
out.println("Hey Server!");
Log.d("ClientActivity", "C: Sent.");
} catch (Exception e) {
Log.e("ClientActivity", "S: Error", e);
}
是什麼毛病此代碼?在此先感謝..
是的。奇怪的是,它不起作用。對於大約百萬次,發生的事情不應該發生,發生的事情不會發生,打印出來的是什麼,您自己調試的結果是什麼? –
我得到一個0字節的j.png文件。但我需要將完整的圖像從一個設備傳輸到另一個設備。 – nick