계속 헤메다가 이렇게 질문을 올리네요.
 
먼저 TCP 소켓으로 통신을 하구요.
 
안드로이드 클라이언트 측에서 주소록을 추출하여 C서버에 저장을 하려고합니다.
 
안드로이드 소스 중에 getlist라는 함수를 만들어서 제 폰에 있는 모든 전화번호를 스트링형식으로 버퍼에 넣는 거까지 되었지만 스트링으로 보내니 서버에서도 그냥 스트링으로 쭉 받더군요.
그래서 전송을 할 때 1024byte 씩 끊어서 보내고 서버에서도 끊어서 받고 싶은데 어떤 방법을 써야할지 모르겠네요. JSON 파싱을 이용하라는 말을 들었는데 개념이 잡히지 않아 잘 되지가 않네요.
 
클라이언트 소스만 첨부하겠습니다. 어떤 식으로 보내고 어떤 식으로 받아야 할지 조언좀부탁드릴게요.
(서버에서 어느 정도에 데이터가 오는지 미리확인하고 받을 수 있게 하는 방법...)
 
지금 스트링으로 보내고 있는데 바이트형식으로 바꿔서 보내는 건지도 궁금합니다.
 
 
package com.mnk.TCPsoketTest;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import org.json.*;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class TCPsoketTest extends Activity {
 ListView listPerson;
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  Button btn = (Button) findViewById(R.id.Button01);
  listPerson = (ListView) findViewById(R.id.android_list1);
  btn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    TCPclient tp = new TCPclient(listPerson.toString());
    tp.run();
   }
  });
 }
 public ArrayList getList() {
  Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
  String[] projection = new String[] {
    ContactsContract.CommonDataKinds.Phone.NUMBER,
    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME };
  // 이름순으로 정렬
  String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
  // 조회해서 가져온다(Cursor 사용)
  Cursor contactCursor = managedQuery(uri, projection, null, null, sortOrder);
  // 정보를 담을 array 설정
  ArrayList persons = new ArrayList();
  if (contactCursor.moveToFirst()) {
   //do {
    persons.add(contactCursor.getString(1) + contactCursor.getString(0));
   //} while (contactCursor.moveToNext());
   persons.add("END");
  }
  return persons;
 }
 private class TCPclient implements Runnable {
  private static final String serverIP = "10.60.1.21"; // ex:
                // 192.168.0.100
  private static final int serverPort = 8000; // ex: 5555
  public TCPclient(String _msg) {
  }
  public void run() {
   try {
    InetAddress serverAddr = InetAddress.getByName(serverIP);
    Log.d("TCP", "C: Connecting...");
    Socket socket = new Socket(serverAddr, serverPort);
    socket.setSendBufferSize(1024);
    socket.setReceiveBufferSize(1024);
    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"EUC-KR")), true);
    ArrayList msg = new ArrayList();
    
    
    msg = getList();
    int msglength = 0;
    msglength = msg.toArray().length;
    Log.d("TCP", "C: Sending: '" + msg + "'");
    out.println(msglength);
    //out.println(msg);
    out.flush();
    Log.d("TCP", "C: Sent.");
    Log.d("TCP", "C: Done.");
    
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"EUC-KR"));
   
   try {
     String msg2 = in.readLine();
     System.out.println(msg2);
     out.flush();
     Log.d("TCP", "C: Server send to me this message -->" + msg2);
     
   }
    catch (Exception e) {
     Log.e("TCP", "C: Error1", e);
    }
    
    finally {
     socket.close();
    }
   }
   catch (Exception e) {
    Log.e("TCP", "C: Error2", e);
   }
  }
 }
}
 
계속 헤매고 있습니다 ㅠㅠ 도와주세요 ㅠㅠ