최근 출시된 안드로이드에서 TCP 소켓 통신을 하려다가 3가지 문제에 부딪혔다.


1. 소켓이 열리지 않는다.

2. 소켓은 열렸는데 죽는다.

3. 바이트 단위로 데이터를 보내고 싶은데 잘 모르겠다.




1. 소켓이 열리지 않는 것은, 참조한 샘플 소스가 대부분 옛날 소스이기 때문이다. 소켓을 생성할 때 쓰레드로 띄우지 않으면 소켓이 열리지 않는다.

//선언부

    private Socket socket;

    private BufferedReader networkReader;

    private BufferedWriter networkWriter;

    private DataOutputStream outStream;

    private String msg = "zxcf";    

    private String ip = "192.168.7.101"; // IP

    private int port = 1470; // PORT번호


    int tcp_flag = 0;

//OnCreate

        MainThread thread = new MainThread();

        thread.setDaemon(true);

        thread.start();


아래쪽에 붙일 것

    public void setSocket(String ip, int port) throws IOException {

        try {

        socket = new Socket(ip, port);

            networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

            tcp_flag = 1;

            outStream = new DataOutputStream(this.socket.getOutputStream()); 

            //networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        } catch (IOException e) {

            System.out.println(e);

            e.printStackTrace();

        }

    }

    

    class MainThread extends Thread {

    public void run (){

    try{

    setSocket(ip, port);    

    } catch (IOException e1) {

    e1.printStackTrace();

    }

    }

    }




2. 보통 샘플들이 소켓을 열고 나서, 글자를 입력하고 버튼을 눌러야먄 동작한다. 그런데 만약 당신이 소켓을 열자마자 동시에 통신을 하려고 하면 앱이 뻗어버린다. (죽어버린다.) 한참 고민하다가 로그를 한줄마다 다 삽입해서 원인을 확인했다.


1번을 적용한 경우에 소켓은 쓰레드에서 열리고 onCreate는 별도로 진행하게 된다. 문제는 소켓이 열리기 전에 tcp 통신을 시도하려고 하면 죽게 된다. 그래서 소켓이 열린 후에 플래그를 바뀌고, 플래그에 따라 통신을 시도하면 된다.


if ( tcp_flag == 1) {

PrintWriter out = new PrintWriter(networkWriter, true);

byte headerbuf[] = new byte[16];

byte[] serialbuf = Build.SERIAL.getBytes();

headerbuf[0] = (byte)0xaa;

headerbuf[1] = (byte)0xaa;

headerbuf[2] = (byte)0xF;

headerbuf[3] = (byte)Build.SERIAL.length();

headerbuf[4] = serialbuf[0];

headerbuf[5] = serialbuf[1];

headerbuf[6] = serialbuf[2];

headerbuf[7] = serialbuf[3];

headerbuf[8] = serialbuf[4];

headerbuf[9] = serialbuf[5];

headerbuf[10] = serialbuf[6];

headerbuf[11] = serialbuf[7];

headerbuf[12] =   (byte) (Integer.parseInt(CurrentZone) - 10000);

headerbuf[13] =   (byte) (10006 - 10000);

headerbuf[14] = (byte)0xfa;

headerbuf[15] = (byte)0xfa;

 

// Send Header

try {

outStream.write(headerbuf);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

outStream.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


즉 플래그가 바뀐 상태에서 소켓 통신을 시도해야만 가능하다.


3. 대부분 TCP 통신 샘플 소스 코드는 println만 지원하므로 DataOutputStream을 이용하는 샘플을 찾아보면 쉽게 할 수 있다.

'업무 > 코딩' 카테고리의 다른 글

logback android 삽질 후기  (0) 2014.11.28

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

아이폰 5 배터리 충전 싸이클이 414회로 나오고 너무 빨리 닳아서 배터리를 교채했다.


구매한 곳


http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=566937716&GoodsSale=Y&jaehuid=200001169&NaPm=ct%3Di2mqeb7k%7Cci%3D215d561d7f44f07ab8e5ec98005d8084f2cf8b3e%7Ctr%3Dsl%7Csn%3D24%7Chk%3D62a818891a4c2142231887c5c2f47e047ead4b98


아이폰 5 배터리 가격은 15200 더하기 배송비 2500원


참조한 곳.


http://zukistyle.tistory.com/36

http://www.getdeal.co.kr/bbs/board.php?bo_table=board_earlyadopter&wr_id=87



반드시 필요한 것.


액정을 들어서 올리는 것. 집에 있는 흡착기 쓸만한 것 확인해보고 정말 힘이 좋아야 들림.

끝이 뾰죽한 1자 드라이벼.

아이폰용 별모양 드라이버.

핀셋.

끝이 가느다란 십자 드라이버.


위의 블로그를 보고 따라하면 되고


  1. 나사 떨어져도 괜찮게 밑에 쟁반 같은 걸로 받치고 나사를 풀고 나사 풀어서 안 잊어버리도록 잘 보관할 것
  2. 흡착기로 들어서 액정이 들린 상태에서 벌려야 함. 아무리 드라이버로 쑤셔봐야 안 벌어짐
  3. 아래쪽부터 벌려서 조금씩 조금씩 일자 드라이버로 쑤셔서 열 것
  4. 십자 드라이버로 아래쪽 나사 2개만 풀면 됨
  5. 배터리 커넥터는 오른쪽에서 들어야 열림. 잘 모르겠으면 배달온 배터리를 볼 것. 즉 배터리 반대쪽에서 열여야 함. 손톱으로 톡 들어올리면 됨.
  6. 배터리 들어올릴때 밑에 양면테이프로 단단히 붙어있으므로 지렛대로 사용할 적절한 도구가 있어야 함. 일자 드라이버 같은걸 잘 이용해 볼 것.
  7. 배터리 교체가 끝나면 조립하기 전에 배터리 싸이클부터 체크할 것. 본인에게 온 것은 25회 사용이었지만 귀찮아서 그냥 쓰기로 함
  8. 배터리 커넥터 커버 덮고, 십자 나사 조이고 반드시 액정을 잠금버튼 있는 머리쪽부터 쑤셔서 넣고 차래로 눌러서 맨 마지막이 홈 버튼 쪽이 조립되어야 함
  9. 별 드라이버 조이고 끝

제일 중요한 점은 마지막에 액정을 조립할 때 머리쪽 부터 눌러서 넣어야 함. 이거 모르고 홈버튼 부터 눌러서 조립했더니 머리쪽이 안 들어가서 다시 액정 들어서 조립함.
흡착기는 집에 있는 뽁뽁이 뒤져보면 아마도 있을 것임.. 흡착기를 유리에 붙여서 얼마나 안 떨어지는지 반드시 확인할 것.

소요시간 : 10분에서 15분. 정말 섬세하게 작업하는게 좋음. 쇼트 안나도록 조심하고 필요한 곳에만 공구가 닫도록 조심조심 할 것.



WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

지마켓에 리퍼비시 팩토리라고 파는 곳이 있는데 가격이 꽤 싸더군요. 폰이 급하게 필요하신 분들은 사도 괜찮을 것 같습니다.


http://item2.gmarket.co.kr/Item/DetailView/Item.aspx?goodscode=629743502

http://item2.gmarket.co.kr/Item/DetailView/Item.aspx?goodscode=611050459

다만 펌웨어 업데이트가 자동으로 가능한지, 한국산 폰과 DMB 빼고 완전히 동일한지 등은 판매자에게 전화해보고 사는게 후회하지 않을것 같네요. AS 정책도 확인해보시구요.

일본판 갤럭시 J 같은 경우는 펌웨어 업데이트 문제가 아주 불편한 모양입니다. 



WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

아반떼 HD 앞 바퀴 타이어가 다 닳아가는 상태에서 어제 피스가 박혀서 펑크가 났다. 때울까 하다가 그냥 교환하려고 일단 예비 타이어를 달았다.

어제 코스트코에 전화했을 때는 전화를 안 받았는데 알고보니 오늘까지 타이어 이벤트였다고 한다. 일반 타이어 4짝 교환시 상품권 3만원, 프리미엄 타이어 교환시 상품권 6만원을 주는 행사가 있었다고 한다.


계속 전화가 안되어서 어떻게 할 까 했는데, 어제 코스트코 대표 번호에 전화했을때는 일요일에도 타이어 센타가 영업을 한다고 했었고, 오늘 다시 전화했을 때 아마 행사중이라 너무 바빠서 전화를 아마 못 받을 것이라는 이야기를 들었다. 


코스트코 배터리 가격은 아반떼 HD용인 델코 MF60L로 74900원이었고 에너지 세이버 195 65R은 두 짝에 207000원 가량이었다.

'일상사 > 소소한 것들' 카테고리의 다른 글

오리젠 사료 대전 판매 매장 The Pet (더 펫)  (0) 2014.11.15
세일러 만년필  (0) 2010.10.28
블로그와 SNS  (0) 2010.10.01
멋진 새해 되세요!  (0) 2010.01.02
블로그에 연탄 난로를 놨습니다.  (6) 2009.11.17

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

12장 있습니다. 블로그에 댓글로 달아주시면 쏴드릴께요.


WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

오리젠 고양이 사료 매장을 찾기 위해 오리젠 홈페이지를 확인한 결과 대전, 세종, 충남 쪽에는 없는 것으로 나왔는데, 수입 업체에 연락해보니 유성 홈플러스 앞에 있는 더 펫에서 판매를 한다고 답변이 왔다.

오늘 가보니 캣 앤 키튼과 6피쉬 모두 판매를 해서 사왔다. 가격은 인터넷 배송비를 포함 가격보다는 싸다. 간 김에 장난감도 하나 사왔는데 고양이 별로 안 좋아해서 대 실망..

간식, 치아 용품, 집, 스크래쳐 등등 모든 물건이 엄청나게 많다.


하지만 오리젠 간식은 팔지 않고 사료만 파니 참고할 것.

'일상사 > 소소한 것들' 카테고리의 다른 글

코스트코에서 차량용 배터리와 타이어를 교환  (0) 2014.11.16
세일러 만년필  (0) 2010.10.28
블로그와 SNS  (0) 2010.10.01
멋진 새해 되세요!  (0) 2010.01.02
블로그에 연탄 난로를 놨습니다.  (6) 2009.11.17

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

현재 올레 KT에서 기가 인터넷 요금제를 무료로 풀고 있습니다.


http://m.shop.olleh.com/weblogic/shop/mshop/event/m_gigaIntLaunching.jsp?cmpid=Shop_Event_gigaIntLaunching_Int_mOlleh_Myolleh_MainBn_141020


2사람 이상의 사람이 67 요금제를 쓰면 기가 콤팩트 인터넷이 무료 : 속도 0.5Gbps (500Mbps)


한사람이 67 한사람이 76 요금제를 쓰면 기가 인터넷이 무료 : 속도 1Gbps


보통 부부나 가족일텐데 먼저 KT에 전화해서 67 완전 무한 요금제 (데이터 무제한, 100분 통화 또는 무제한 통화 5G 데이터) 중에 골라서 선택한 후에 지역번호 더하기 100번 눌러서 고객센터에 신청하시면 됩니다.


물론 반드시 이걸 하시기 전에 본인의 집이 해당 지역인지 먼저 알아야 합니다. 기가 인터넷이 되는지 먼저 전화한 후에 물어서 바꿔주세요. 아싸 하고 요금제부터 바꾸시면 안됩니다.


전화하면 이전에 무슨 결합이 풀리느니 어쩌니 하는데 그냥 신경 끄고 신청했습니다. 오늘 오후에 택배 기사님이 방문해서 설치하고 갔습니다.


와이프님 말씀에 의하면 측정속도 기준 400Mbps 이상 나온다고 하네요. 나중에 폰이 802.11AC 되는 폰을 사게 되더라고 어차피 이정도 속도면 충분하다고 생각했습니다.


참 저희 집은 세종시인데 집 벽 단자함에 처음부터 광케이블 포트로 올라오고, 100Mbps 쓸때부터 광모뎀이었습니다. 어차피 광모뎀인것도 알고 있었고, 그 전에 기가 인터넷 돈주고 가입하겠냐고 전화와서 거절햇는데, 이번 기회에 잘 바꿨네요.



와이프가 제 컴퓨터는 420Mbps, 와이프 컴퓨터는 480Mbps 나온다고 합니다. 자 달리세요. 공유기는 IPTIME AS2004Plus 를 무료로 주는데 802.11ac를 지원하는 공유기입니다. IPTIME 홈페이지에서는 무선 속도 최대 876Mbps를 지원한다고 하는데.. 얼마나 나올지는 잘 모르겠네요.


WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

보통은 DB 쿼리 속도에 신경쓰지 않는다고 하지만, 성능이 발목을 잡거나, 일시에 병목이 일어나서 에러가 난다거나, 에뮬레이션을 해야 한다거나 하면 Query 속도가 얼마나 걸리는지 찾아보고, 튜닝할 필요가 생기게 된다.

이번에 동작하는 프로젝트는 쿼리가 100번 또는 이만번이 연속적으로 실행되면서, 실행 성능을 보는 것이었는데, 문제는 순수하게 수행 성능을 봐야 하는데, 쿼리 시간이 회수가 곱해진만큼 더해지면서 문제가 된 것이다.

 

ㄱ래서 따로 쿼리 타임을 측정해본 결과 초기에는 셀렉트나 업데이트 모두 10ms에서 13ms가 걸렸다. 따라서 인덱스 키를 단일화 하고 정리해서 시험해본 결과 셀렉트는 1ms 이하로 떨어졌고, 업데이트 속도는 하드디스크의 경우는 5~10ms 이내로 줄어 들었고, SSD는 2~3ms로 줄어들었다.


WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

SGOT와 SGPT 수치만 건강 검진 시에 몇년 간 높게 나왔는데 의사 선생님들께서 별말씀이 없으셔서 그냥 괜찮은줄 알았다. 그런데 계속 대변 상태가 안 좋고, 위도 아파서 위장 내시경과 대장 내시경을 하기 위해 갔다가, 혈액 검사 후에 의사 선생님에게 혼났다.

수치가 높다면 하나라도 의심을 해서 의사 선생님한테 물어봐야지 왜 방치했냐는 것. 사실 나도 인터넷으로 검색을 해 보았지만 이게 의미하는 바가 모호하고 검사하기도 애매해서 그냥 두고 있었는데 바로 검사를 한 후에 이유를 알게 되었다.

검사 방법은 초음파 검사이다. 초음파 검사 장비가 있는 병원에 가서 검사를 하게 되면, 간의 크기와 색깔 등이 보이게 되는데 간이 부어있거나 커져있으면 지방간이다.

술을 평소에 많이 마시느냐, 안 마시느냐에 따라 알콜성 지방간염과 비알콜성 지방간염이 있는데, 나는 술을 거의 마시지 않기 때문에 비알콜성 지방간염이라고 한다. 그 중에서 단계가 2단계라고 한다.

평소에 피곤했는데, 그 이유를 전혀 모르고 있다가 그제서야 알 게 된 셈이다.

비알콜성 지방간염에서 낫기 위해서는 약을 먹으면서, 체중을 감량하고 운동을 해야 한다. 결국 몇달치 약을 나누어 짓고, 먹으면서 틈틈히 운동하고 피곤해지지 않기 위해 노력하고 있으니 수치가 내려갔다.

 

간 수치는 간 세포가 죽으면서 내놓는 수치기 때문에 간의 상태가 좋지 않다는 것이고, 이 수치가 높은 사람은 바로 초음파 검사를 받아보기 바란다. 최소한 약이라도 먹으면 피곤함이 줄어들기 때문이다. 오미자, 마늘 등이 좋다고 한다.

'일상사 > 의학지식' 카테고리의 다른 글

벤조피렌  (0) 2012.10.24
흉쇄유돌근을 풀어주면 이명이 완화되거나 치료된다  (1) 2009.06.06

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

방문자 수가 높은 것은 트랙백 덕분이라는 생각도 들긴 하지만, 허수인 방문자 수가 무슨 의미가 있으랴.

하긴 지금도 검색 엔진 봇이 훓고 지나간게 대다수고 실제 방문자수는 어떻게 잡히는지도 모르겠다만.


뭐 그래도 트랙백은 차라리 당분간 막아두는게 나을 듯 하다. 댓글 기능도 있고. 소셜 링크가 차라리 트랙백보다 나으니까.


대신 차단되었던 아이피를 다 풀어야 할 듯 하다.


WRITTEN BY
가별이
내가 천사의 말 한다 해도

,