소켓통신쪽에 공부를 하는데

간단한 숫자나 string값을 넘기는거 까진 성공했습니다.

근데 제가 안드로이드 폰에서 넘겨야 할 값은 3가지로

핸드폰 번호, 위도 경도를 넘겨야 하는데...

한꺼번에 이 정보 3개를 넘기기 위해 클래스를 하나 지정하고

넘기려 했는데..

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.example.gps_client.info라고

에러메세지가 뜨네요

대충 검색해보니 직렬화 해야한다는데..무슨말인지도 모르겠고..ㅠ

좀 도아주세요 ㅠ 소스 코드 붙입니다 ㅠ

 

이건 info부분입니다.
public class info {
String P_number;//전화번호
double Latitude;//위도
double Longitude;//경도

......

}

 

이 부분은 서버 부분입니다.

 

 import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class test_server {
 public static void main(String args[])
 {
  info result=new info ();
  int port = 8021;
  try {
   
   ServerSocket mysocket = new ServerSocket(port);
   System.out.println("socket make success.."); 
   while (true)
   {
    Socket c_sock = mysocket.accept();
    System.out.println("client socket..");
    InetAddress clienthost = c_sock.getLocalAddress();
    int clientport = c_sock.getPort();
    System.out.println("연결된 클라이언트 ->" + "Ip : "+clienthost+", port : "+ clientport);
    ObjectInputStream out = new ObjectInputStream(c_sock.getInputStream());
    result = (info)out.readObject();
    System.out.println("번호 : "+result.get_number()+"  좌표 : "+result.get_Latitude()+"  "+ result.get_Longitude());
   }
  }
  catch (Exception e) {
   // TODO Auto-generated catch block
   System.out.println(e);
  }
 }
}


이부분은 클라이언트 부분입니다.(버튼 클릭시 소켓통신활성화 하여 보내는 부분)

   conn.setOnClickListener(new View.OnClickListener() {
   @SuppressLint("NewApi")
   public void onClick(View v) 
   {    
    info infomation =new info ();
    infomation.set_number(myNumber);
    infomation.set_Latitude(T_Latitude);
    infomation.set_Longitude(T_Longitude);
    //이 아래 2줄은 안드로이드 소켓 통신이 접속 가능하도록 만들어주는 기능으로, 2.2버전 이상의 안드로이드는 필요한 기능이다.
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
    /////////////////////////////////////////////////////////////////////////////
    try {
     Socket socket = new Socket("192.168.1.145",8021);
     ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
     out.writeObject(infomation);
     out.flush();
           
    } catch (Exception e) {
     // TODO Auto-generated catch block
     String a = e.toString();
     AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
     alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {    
       dialog.dismiss();     //닫기   
      }
     });
     alert.setMessage(a);
     alert.show();
    } 
   }    
  });
 }

초보자라 직렬 연결 이런걸 잘 모르네요 ㅠ

답변좀 부탁드리겠습니다 ㅠ