0

我已经尝试并尝试在两个android设备之间发送图片,但是我无法弄清楚传输问题。我修改了wile循环甚至消除了循环,但它仍然不起作用。当我在设备上测试我的项目时,连接没有问题。但是,随着传输任务的开始,发送客户端停止,接收端出现“传输错误”消息。有谁知道我可以对我的程序做些什么?这是我发送和接收的两个主要部分。

我将非常感谢任何帮助。谢谢你。

发送部分:

new Thread() {  
        public void run() {
            try {  
                File file = new File("/storage/emulated/0/Pic/img3.jpg");
                s = new Socket("192.168.1.106", 1234); 
                FileInputStream fis = new FileInputStream(file); 
                din = new DataInputStream(new BufferedInputStream(fis)); 
                dout = new DataOutputStream(s.getOutputStream());  
                dout.writeUTF(String.valueOf(file.length())); 
                byte[] buffer = new byte[1024];  
                int len = 0;  
                /*while ((len = din.read(buffer)) != -1) {  
                    dout.write(buffer, 0, len); 
                }  */
                dout.write(din.read());
                dout.flush();  

            } catch (IOException e) {  
                System.out.println(e.toString());  
            } 

接收部分:

try {
File file = new File("/storage/emulated/0/DCIM/t.jpg");
Log.d("tag===========", "transfer file:"+file);
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
din = new DataInputStream(bis);  
    FileOutputStream fos = new FileOutputStream(file);
    dout = new DataOutputStream(new BufferedOutputStream(fos));  
    byte[] buffer = new byte[1024];  
    int len = 0;  
    /*while ((len = din.read(buffer)) != -1) {  
    dout.write(buffer, 0, len);  
    }  */
    dout.write(din.read());
    dout.flush();  
    dout.close(); 

这是目录

08-28 00:08:35.118: I/PowerManagerService(480): Waking up from sleep...
08-28 00:08:35.329: I/WindowManager(480): Lock screen displayed!
08-28 00:08:35.489: D/PowerManagerService-JNI(480): Excessive delay in autosuspend_disable() while turning screen on: 328ms
08-28 00:08:35.489: D/SurfaceFlinger(125): Screen acquired, type=0 flinger=0x40dec318
08-28 00:08:35.539: D/dalvikvm(576): GC_CONCURRENT freed 1613K, 44% free 10558K/18832K, paused 7ms+4ms, total 74ms
08-28 00:08:36.769: D/PhoneStatusBar(576): disable: < expand icons alerts ticker system_info BACK HOME recent* clock search >
08-28 00:08:36.799: D/PhoneStatusBar(576): disable: < expand icons alerts ticker system_info back* home* recent clock search >
08-28 00:08:36.799: W/InputMethodManagerService(480): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@426bbc20 attribute=android.view.inputmethod.EditorInfo@426bbc30, token = android.os.BinderProxy@4223c5b0
08-28 00:08:37.279: V/TAG(480): bug 7643792: fitSystemWindows([0,33][0,0])
08-28 00:08:40.739: D/dalvikvm(576): GC_CONCURRENT freed 619K, 42% free 10969K/18832K, paused 4ms+4ms, total 37ms
08-28 00:08:40.739: D/dalvikvm(576): WAIT_FOR_CONCURRENT_GC blocked 19ms
08-28 00:08:40.789: I/ActivityManager(480): START u0 {act=com.android.systemui.recent.action.TOGGLE_RECENTS flg=0x10800000 cmp=com.android.systemui/.recent.RecentsActivity} from pid 576
08-28 00:08:40.859: D/dalvikvm(480): GC_CONCURRENT freed 1838K, 14% free 14256K/16568K, paused 2ms+5ms, total 71ms
08-28 00:08:40.859: D/dalvikvm(480): WAIT_FOR_CONCURRENT_GC blocked 56ms
08-28 00:08:42.479: I/ActivityManager(480): Killing 2205:com.example.recepic/u0a10069: remove task
08-28 00:08:43.449: I/ActivityManager(480): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 576
08-28 00:08:43.509: D/dalvikvm(480): GC_FOR_ALLOC freed 637K, 16% free 13951K/16568K, paused 47ms, total 47ms
08-28 00:08:45.319: D/dalvikvm(733): GC_FOR_ALLOC freed 10234K, 48% free 11377K/21852K, paused 23ms, total 32ms
08-28 00:08:45.409: D/dalvikvm(733): GC_FOR_ALLOC freed 60K, 45% free 12220K/21852K, paused 22ms, total 22ms
08-28 00:08:45.489: D/dalvikvm(733): GC_CONCURRENT freed 172K, 38% free 13624K/21852K, paused 7ms+4ms, total 48ms
08-28 00:08:45.489: D/dalvikvm(733): WAIT_FOR_CONCURRENT_GC blocked 43ms
08-28 00:08:45.489: D/dalvikvm(733): WAIT_FOR_CONCURRENT_GC blocked 7ms
08-28 00:08:45.509: D/dalvikvm(733): WAIT_FOR_CONCURRENT_GC blocked 60ms
08-28 00:08:45.529: I/dalvikvm-heap(733): Grow heap (frag case) to 15.541MB for 248848-byte allocation
08-28 00:08:45.569: D/dalvikvm(733): GC_FOR_ALLOC freed 1946K, 37% free 13817K/21852K, paused 36ms, total 36ms
08-28 00:08:45.629: D/dalvikvm(733): GC_CONCURRENT freed <1K, 36% free 14144K/21852K, paused 3ms+3ms, total 58ms
08-28 00:08:45.729: D/dalvikvm(733): GC_CONCURRENT freed 2372K, 36% free 14021K/21852K, paused 1ms+3ms, total 26ms
08-28 00:08:45.729: D/dalvikvm(733): WAIT_FOR_CONCURRENT_GC blocked 17ms
08-28 00:08:45.739: D/dalvikvm(733): WAIT_FOR_CONCURRENT_GC blocked 21ms
08-28 00:08:45.779: D/dalvikvm(733): GC_FOR_ALLOC freed 851K, 35% free 14260K/21852K, paused 20ms, total 20ms
08-28 00:08:45.809: D/dalvikvm(733): GC_FOR_ALLOC freed 355K, 30% free 15388K/21852K, paused 20ms, total 20ms
08-28 00:08:45.929: D/dalvikvm(733): GC_FOR_ALLOC freed 1857K, 27% free 16088K/21852K, paused 19ms, total 19ms
08-28 00:08:45.989: D/dalvikvm(733): GC_CONCURRENT freed 1484K, 20% free 17518K/21852K, paused 2ms+4ms, total 26ms
08-28 00:08:47.989: I/ActivityManager(480): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.recepic/.Receive} from pid 733
08-28 00:08:48.029: D/dalvikvm(2547): Late-enabling CheckJNI
08-28 00:08:48.029: I/ActivityManager(480): Start proc com.example.recepic for activity com.example.recepic/.Receive: pid=2547 uid=10069 gids={50069, 3003, 1015, 1028}
08-28 00:08:48.129: D/libEGL(2547): loaded /system/lib/egl/libEGL_tegra.so
08-28 00:08:48.139: D/libEGL(2547): loaded /system/lib/egl/libGLESv1_CM_tegra.so
08-28 00:08:48.149: D/libEGL(2547): loaded /system/lib/egl/libGLESv2_tegra.so
08-28 00:08:48.169: D/OpenGLRenderer(2547): Enabling debug mode 0
08-28 00:08:48.179: W/InputMethodManagerService(480): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@424166f8 (uid=10033 pid=733)
08-28 00:08:48.209: D/dalvikvm(669): GC_CONCURRENT freed 399K, 7% free 7744K/8304K, paused 6ms+2ms, total 30ms
08-28 00:08:48.229: I/ActivityManager(480): Displayed com.example.recepic/.Receive: +207ms
08-28 00:08:57.839: D/tag===========(2547): transfer file:/storage/emulated/0/DCIM/t.jpg
4

1 回答 1

0

您需要在这里查看显示如何通过套接字发送图像的答案:通过套接字问题发送图像流 - Android

FileInputStream fileInputStream = new FileInputStream( "my_image_file_path" );

int nRead;
byte[] data = new byte[16384];

try {
    while( (nRead = fileInputStream.read(data, 0, data.length)) != -1 ){
        networkOutputStream.write( data, 0, nRead );
    }

} catch( IOException e ){
    e.printStackTrace();
}
fileInputStream.close();
于 2013-08-27T17:15:44.473 回答