핸드폰에서 이미지 이름을 치면 서버(pc)에 지정된 폴더에 이미지 파일이 저장되는 건데요

 

이미지 파일이 깨져서 나오네요..ㅠㅠ

 

아주작은 이미지 파일은 되는데 그냥 보편적인  사진은 안되네요..

 

사진 사이즈가 문제인가요;;

 

제가 통신잘 몰라서요;;;상세히좀 알려주시면 복받으실꺼에요.ㅜㅜ

 

소스는 아래와 같습니다.

 

 

서버-----------

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer implements Runnable {

 public static final int serverPort = 10200;

 @Override
 public void run() {

  try {

   System.out.println("대기중..");

   ServerSocket serverSocket = new ServerSocket(serverPort);

   while (true)

   {

    Socket sock = serverSocket.accept();

    System.out.println("수신중....");

    try {

     BufferedReader in = new BufferedReader(new

     InputStreamReader(sock.getInputStream()));

     String str = in.readLine();

     System.out.println("수신중인 파일 이름 : " + str);

     File f = new File("c:\\down\\", str + ".jpg");

     FileOutputStream output = new FileOutputStream(f);

     byte[] buf = new byte[1024];
     while (sock.getInputStream().read(buf) > 0)

     {

      output.write(buf);

      output.flush();

     }

     in.close();

     output.close();

     System.out.println(str + ".jpg 수신완료");
     

    }

    catch (Exception e) {

     System.out.println("서버 에러!!");

     e.printStackTrace();

    }

    finally {

     sock.close();

    }

   }

  }

  catch (Exception e) {

   e.printStackTrace();

  }

 }

 public static void main(String[] argv) {

  Thread doit = new Thread(new TCPServer());

  doit.start();

 }

}

 

클라이언트-----------------------------------------

 

package sm.bit.sock;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Sock extends Activity {

 private EditText myet;

 private TextView mytv;

 private Button mybtn;

 public String remsg;

 @Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  myet = (EditText) findViewById(R.id.etv);

  mytv = (TextView) findViewById(R.id.tv);

  mybtn = (Button) findViewById(R.id.btn);

  mybtn.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {

    if ((mybtn.getText().toString() != null) &&

    (!mybtn.getText().toString().equals(""))) {

     TCPClient tp = new TCPClient(myet.getText().toString());

     tp.run();

     mytv.setText(myet.getText().toString());

     myet.setText("");

    }

   }

  });

 }

}

 

 

package sm.bit.sock;

import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class TCPClient implements Runnable {

 private static final String serverIP = "192.168.1.122";

 private static final int serverPort = 10200;

 private String msg;

 public TCPClient(String msg) {

  super();

  this.msg = msg;

 }

 @Override
 public void run() {

  try {

   InetAddress serverAddr = InetAddress.getByName(serverIP);

   Socket sock = new Socket(serverAddr, serverPort);

   try {

    PrintWriter out = new PrintWriter(new BufferedWriter(new

    OutputStreamWriter(sock.getOutputStream())), true);

    out.println(msg);

    out.flush();

    DataInputStream dis = new DataInputStream(new

    FileInputStream(new File("/mnt/sdcard/" + msg + ".jpg")));

    DataOutputStream dos = new DataOutputStream(
      sock.getOutputStream());

    byte[] buf = new byte[1024*1024];

    while (dis.read(buf) > 0)

    {

     dos.write(buf);

     dos.flush();

    }

    dos.close();

   }

   catch (Exception e) {

    e.printStackTrace();

   }

   finally

   {

    sock.close();

   }

  }

  catch (Exception e) {

   e.printStackTrace();

  }

 }

}

 

 

부탁드립니다!!!!!!!!!!!!!!!!!!!!!!!!!!^^