2015년 5월 24일 일요일

네트워크 소켓 프로그래밍 시 INADDR_ANY의 의미



INADDR_ANY는 #define를 통해 0으로 설정되어 있습니다.


INADDR_ANY는 자동으로 이 컴퓨터에 존재하는 랜카드 중 사용가능한 랜카드의 IP주소를 사용하라는 의미입니다.


"어? 그러면 그냥 내가 가지고 있는 IP주소를 입력해도 되지 않나요?"


라고 생각하실 탠데 약간 더 중요한 의미가 하나 더 있습니다.


예를들어 내 컴퓨터는 총 2개의 랜카드가 설치되어 있고 각각의 ip주소가 아래와 같다고 가정합시다.


랜카드1 : 192.168.0.100
랜카드2 : 192.168.0.200


내 컴퓨터는 총 2개의 ip주소를 가지고 있으므로 외부에서 192.168.0.100으로 데이터를 보내건, 192.168.0.200으로 데이터를 보내건 내 컴퓨터로 오는건 똑같습니다.


하지만 프로그램은 약간 다릅니다. 내가 만든 프로그램에 ip주소를 192.168.0.100으로 등록해 뒀다면 192.168.0.200으로 들어오는 데이터는 받지 않습니다.


즉, 어차피 같은 컴퓨터임에도 불구하고 ip주소가 다르면 처리를 못한다는 의미입니다.


이때, INADDR_ANY를 사용하면 192.168.0.100으로 들어오건, 192.168.0.200으로 들어오건 모두 똑같이 처리할 수 있습니다.


만약, 내가 만드는 프로그램은 무조건 192.168.0.100으로 들어온 접속만 처리해야된다 하시면 INADDR_ANY를 사용하시면 안되고 192.168.0.100으로 명시적으로 설정해 주셔야 합니다.

vistual studio에서 컴파일 시 에러 (COFF로 변환하는 동안 오류가 발생했습니다.)

LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.

또는

fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt


위와 같은 에러가 발생하는 경우 아래 2가지 방법으로 해결하실 수 있습니다.


첫번째 방법은 release 모드로 컴파일 한다.



두번째 방법은 해당 프로젝트를 우클릭해서
속성 -> 구성속성 -> 링커 -> 매니페스트 파일 -> 매니페스트 생성 (예)를 (아니오)로 바꾸세요.

C++ 멀티 채팅 프로그램 (Multi Chatting Program)

이건 제가 스터디를 통해서 교육하고 있는 '네트워크 프로그래밍' 수업에서 실습으로 진행하고 있는 멀티 채팅 프로그램입니다.

C++을 이용했구요. 윈도우즈에서 동작하는 멀티 채팅 프로그램입니다. 혹시 네트워크 프로그래밍을 공부하시는 분이나 채팅 소스가 필요하신 분은 가져다 쓰시기 바랍니다.

학습용이라 다소 매끄럽지 못하고 문제가 발생할 수 있으니 사용처에 따라 정확하게 이해하고 사용하시기 바랍니다.







첨부된 파일 안에 server, client 모두 들어 있습니다.
visual studio 에서 작성 했으며 만약, 컴파일 시 에러가 발생하신다면 release 모드로 컴파일 하시기 바랍니다.

chatting.zip(다운로드)

지식재산능력시험(IPAT) 응시


오늘 아침에 지식재산능력시험(IPAT)에 응시했습니다.

어젯밤 급하게 벼락치기로 새벽까지 공부하긴 했지만 평소 바빠서 공부도 거의 못하고 들어갔네요.

다른 사람들의 후기를 보면 시험 난이도가 꾀 높다고 하던데 막상 시험을 보니까 쉬운 문제도 있었고

어려운 문제도 있더라구요.

도저히 모르겠다 싶거나 어려운 용어가 나오면 열심히 추리(?)해서 그럴싸한 답으로 찍었습니다.ㅋㅋ

공부할때는 이해가 안가는 부분도 거의 없었고 술술 진도가 나가서 이번 기회에 변리사까지 도전해 볼

까 했었는데 책 뒤에 있는 문제를 보고 마음이 싹 바꼈네요. (역시 법쪽은...)

특허쪽이라던지 지식재산권 관련해서 공부하고 싶으신 분들은 이 IPAT 시험에 한번 도전해 보세요.

저는 '지식재산의 정석'이라는 교재를 참고해서 공부했습니다.

특히 IT쪽에서 일하신다면 특허쪽은 알아두면 이래저래 많이 도움될껍니다.

npm, node.js, express 버전 확인 방법

최근 node.js가 떠오르면서 업데이트도 많아지고 확확 바뀌더군요. 뭐좀 할라고 하면 새로운게 나오고 좋은점도 있고 불편한 점도 있지만 기술이 바뀌는데 어쩔 수 없죠.

아는 선배가 똑같은 express를 생성 했는데 특정 코드가 어디선 되고 어디선 안되고 이런 문제들이 발생해서 찾아보니 express 버전이 서로 다르더라구요.

그래서 혹시 개발할 때는 잘 됬는데 서버에 올렸을 때 잘 안되시거나 개발환경을 바꿨을 때 제대로 동작을 안하시면 꼭 버전부터 확인해 보세요.

node -v

npm -v

express -V  (요곤 V가 대문자입니다.)

2015년 5월 21일 목요일

Ubuntu 64bit에서 32bit 프로그램 실행시키기

열심히 개발한 프로그램을 Ubuntu에 넣고 실행했더니 멀쩡하게 있는 파일을 보고 no such file or directory 랍니다...


뭔가... 하고 한참 고민해본 끝에 'file' 명령어를 통해 확인해 봤더니..


ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x42279cc1c0032fe6ca98b0823767b310be3e3a8c, not stripped


바로 눈에 띄는것이 32-bit!!
설치한 Ubuntu는 64bit였습니다. 64bit에서 32bit를 돌리려 하니 서로 호환이 되지 않았던 모양입니다.
이럴 때는 아래와 같이 i386를 먼저 등록해 주세요.


sudo dpkg --add-architecture i386


확인은 아래 명령어를 통해서...


dpkg --print-architectures
dpkg --print-foreign-architectures


i386이 등록된 것을 확인하시고, 아래 명령어를 통해 32bit library를 설치해 줍니다.


sudo apt-get update
sudo apt-get -y install ia32-libs

Ubuntu Qt 설치


Qt Library
sudo apt-get install libqt4-dbg
sudo apt-get install libqt4-dev
sudo apt-get install libqt4-gui
sudo apt-get install libqt4-core


Qt Designer
sudo apt-get install qt4-designer
sudo apt-get install qt4-dev-tools


Qt Creator
sudo apt-get install qtcreator




32bit용 설치
XXX:i386
ex) apt-get install libqt4-gui:i386