안드로이드 네트워크 프로그래밍 필수 사항안드로이드 네트워크 프로그래밍 필수 사항

Posted at 2011. 5. 7. 23:13 | Posted in Computer Science/네트워크응용설계
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Swing 대신 Android 껍데기를 씌워났다고 생각하면 금방 프로그래밍을 할 수 있었다. 어차피 필요한 모듈은 일반적인 자바 클래스로 만들면 되기 때문이다. 그런데 같은 소스를 JRE 환경에서 실행하면 잘 동작하고 Android 환경에서 실행하면 Socket 연결이 안되는 것이였다. 너무 아리 송송하였다. 심지어 다른 분들의 예제 역시 동작하지 않았다.

혹시 네트워크 환경이 잘 못되었는가 의심이 들었다. 그러던 중 안드로이드와 네트워크 관련된 사항을 찾아보았다. 문제는 단 한 줄 이였다. 안드로이드는 접근 권한이 있었다. AndroidManifest.xml 파일에 저 위에 있는 한 줄을 추가시켜 주지 않으면 절대 Server Socket 이든 일반 Socket 이든 접속을 하지 않는다. ㅜㅜ

정말 오늘 많은 것을 배웠지만 그 만큼 많은 시간을 소비하였다. 책을 다 읽어 보기에는 분량이 있었기에 앞에 내용만 살짝 보고 프로그래밍한 결과이다. 결국 빠르게 갈 수 있는데 멀게 돌아왔다는 생각이 들었다.
//

HW#03 : 안드로이드 플랫폼 기반의 메일 전송 프로그램HW#03 : 안드로이드 플랫폼 기반의 메일 전송 프로그램

Posted at 2011. 5. 7. 21:08 | Posted in Computer Science/네트워크응용설계

네트워크응용설계 과목의 세 번째 숙제는 안드로이드 플랫폼 기반의 메일 전송 프로그램을 작성하는 것이다. 정말 평생 안드로이드 프로그래밍을 할 일이 없을 것이라 생각하였다. 난 영원한 C 프로그래머로 남고 싶었다. 특히 임베디드 C 프로그래머가 되고 싶었다. 한정된 자원에서 가장 효과적인 개발을 하기 위해서는 고도의 기술이 요구되고 난 그러한 기술을 배우고 싶다. 아무튼 이번 프로젝트는 재미있는 것 같다. 일단 스마트폰에서 개발 하기 위해 첫 번째 요소는 UI(User Interface)이다.

프로그램을 완성시키고 나머지 글을 완성해야 하겠다.

//

SNMP 이야기SNMP 이야기

Posted at 2011. 4. 27. 17:47 | Posted in Computer Science/네트워크응용설계

이번 네트워크응용설계의 주제는 "SNMP(Simple Network Management Protocol)"이였다. 침해사고대응팀에 있을 때 우리의 관제 대상 중 하나가 바로 전체 시스템의 장애 유무 였다. 모든 장비는 Manager에게 시스템의 현재 상태를 보고 하는 패킷을 보내주었고 EMS(Enterprise Management System)으로도 패킷을 보내었다.

그 당시에 SNMP는 신기한 프로토콜이였다. 이렇게 많은 네트워크 장비를 손쉽게 관리할 수 있다는 사실이 무척 흥미로웠다. 또한 장비의 장애 유무를 세심하게 볼 수 있었다. 각 장비의 Port에 대한 정보부터 시작하여 기본적인 CPU 사용률, Memory 사용률, Disk 사용률을 손쉽게 파악할 수 있었다. 또한 어떤 장비의 경우 원격으로 명령을 내릴 수 있기도 하였다.

한 가지 기억에 또 남는 것이 있다면 발전기를 점검할 때 이다. 주기적으로 발전기 점검을 하게 된다. 이 때 UPS가 잘 동작하는지도 확인한다. 하지만 UPS가 버틸 수 있는 시간에는 한계가 있기 때문에 핵심적인 장비 외에는 전원을 내린다. 그렇게 되면 SNMP 솔루션 프로그램에 망에 전부 파란색에서 빨간색으로 표시된다. 평상시같으면 큰일이지만 이 때는 괜찮다. 이런 기회가 없겠다 싶어서 화면을 갈무리 해놓던 것이 기억난다. 하지만 이것 역시 보안상 취약점이 있다. 수업 시간에도 언급하였듯이 망 정보는 밖으로 나가면 안되는 정보이다. 라우팅 테이블 역시 마찬가지이다. 예전에 유투브와 관련된 해킹 사건 역시 라우팅 테이블과 관련이 있었다.

수업을 듣던 중 옛날 생각이 나서 이렇게 글을 남긴다. 또한 현재 생각해 두고 있는 IPS 시스템을 만든다면 꼭 SNMP 기능을 구현해 보고 싶다.

//

인터넷 멀티캐스트 라우팅 프로토콜 분석인터넷 멀티캐스트 라우팅 프로토콜 분석

Posted at 2011. 4. 10. 15:30 | Posted in Computer Science/네트워크응용설계

인터네트워크의 하위 주제로 멀티캐스트를 다루고 있다. 책과 강의 노트를 기반으로 공부를 하여도 잘 이해되지 않는 부분이여서 인터넷에서 자료를 찾아보기로 하였다. 구글에서 검색한 결과 중 한국전자통신연구원의 "인터넷 멀티캐스트 라우팅 프로토콜 분석"이라는 제목의 글을 발견하였다. 내용이 아주 유용한 것 같다. 참고로 이 PDF 파일의 저작권은 한국전자통신연구원에 있다.

//

Assignment 01. 단방향 Talk 프로그램Assignment 01. 단방향 Talk 프로그램

Posted at 2011. 3. 16. 17:40 | Posted in Computer Science/네트워크응용설계

이번 과제는 아주 재미있는 Socket 프로그래밍이였다. JAVA 언어를 이용하여 작성하는 것이였는데 Socket을 생성하고 Object를 주고 받는 것은 간단하지만 예외 처리가 복잡하였다. 이는 사실 당연한 결과이다. JAVA 언어는 추상화와 계층화를 잘 하여 프로그래머를 바보로 만든다. 하지만 그런 장점 뒤에는 예외 처리라는 것이 존재한다.

친구들의 숙제를 보면서 정말 사람마다 생각이 많이 다르다는 것을 느꼈다. 나의 경우 Socket에 연결한 Filter는 ObjectInputStream과 ObjectOutputStream이였다. 그리고 이것을 넘겨주기 위해 readObject와 writeObject 메소드를 호출하여 String 클래스를 넘겨주었다. 하지만 어떤 친구는 read 메소드와 write 메소드를 사용하여 char[] 형태를 넘겨주었다. 단순 Talk 프로그램이라면 이러한 char[] 형태로 넘겨주어도 괜찮지만 클래스를 넘겨줄 때는 readObject 메소드와 writeObject 메소드를 넘겨주는 편리하다.
//

네트워크응용설계 Assignment 01네트워크응용설계 Assignment 01

Posted at 2011. 3. 13. 03:09 | Posted in Computer Science/네트워크응용설계

Receiver 프로그램은 Sender 프로그램이 접속할 수 있도록 ServerSocket을 열고 기다리고 있다. 이러한 가운데 Sender 프로그램이 접속하게 되면 무한 루프에 진입하게 된다. Sender 프로그램 문자열을 입력하면 그것을 수신하여 그대로 화면에 보여주게 된다. 또한 다중의 연결을 위해 클라이언트의 종료를 확인하고 있다.


네트워크응용설계 과목의 첫 번째 프로젝트이다. TCP를 이용하여 단방향 Talk 프로그램을 작성하는 것인데 참으로 재미있다. 조금 있으면 양방향 Talk 프로그램도 해야 되는데 정말 더 흥미진진해질 것 같다. 메시지를 넘길 수 있으면 Object도 넘길 수 있으니 뭐든 할 수 있으니깐. 하지만 Report 쓰는데 시간이 너무 많이 소요되는 것 같다. 다른 과목도 공부를 해야 되는데 시간이 많이 부족하다.
//