UDP Socket 소켓 프로그래밍 질문~!! (포트 열기)
글쓴이: Long_run / 작성시간: 화, 2012/05/29 - 3:35오후
프로그램 예제 실행 중 궁금한 사항입니다..ㅎㅎ
UDP Socket 생성 예제 중..
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(5000);
이런식으로 설정을 해주는데 질문할 것은 포트 부분입니다.
포트 부분에 위처럼 포트를 직접 입력해주거나
프로그램 실행시 " ./server.exe 5000 " 과 같이 입력하는 예제들이 많은데..
궁금한점이 어떤 포트던지 상관없이 받을 수는 없는건가요?
대부분 구글링으로 찾은 예제들을 보면 모두 저 부분에 값을 입력하거나..
프로그램 실행시 입력받은 문자열을 바탕으로 제작되어 있더라구요..
제가 하고 싶은 프로그램은..
서버로 들어오는 신호는 IP나 Port에 관계없이 항상 열어두고 모두 받고 싶은데요 ㅎㅎ
제가 원하는 것을 구현하기 위해선 어떠한 방법들이 있을까요?
Forums:
소켓 통신에대해서.,..
일단 소켓통신에 대해 이론을 좀더 공부하시고 소스 코딩에 들어가시는걸 추천 합니다..
적으신 내용과 같이 addr을 INADDR_ANY로 하였을시 말씀대로 어떤 IP라던지 상관없이 받을수 있습니다.
하지만 포트는 다릅니다... IP가 아파트 동 번호라면 포트는 호수 입니다... 우편물 배달할때 특정 위치의 아파트 동만 적는다고
우편물이 다 가지는 않지요? 호수 까지 적어야 정확하게 배달 되듯이 소켓 통신도 마찬가지로 포트가 맞아야합니다..
사용하시는 포트 번호는 아무거나 사용하셔도 됩니다. 단! 시스템 예약 포트 (Well Known port)는 사용 불가입니다.
예를들어 (22, 21,80, 등등..)
또 UDP 및 TCP 사용포트는 구별됩니다.. 같은 포트를 쓰더라도 사용 프로토콜이 다르면 가능합니다.
즉 UDP 5000번 사용시 TCP 5000번 사용 가능.
그렇군요
" UDP/IP는 클라이언트와 서버로 나뉘고 1 대 다수의 통신 방식은 아닙니다. "
..는 내용과 croae님 말씀처럼 IP/PORT에 대한 내용까지는 숙지하고 있었는데^^;;
질문의 취지는 제가 원하는 방향으로 만들어낼 수 있는 방법이나 혹은 아이디어가 있는지 궁금해서 올리게 되었습니다..ㅎㅎ
(예를 들어 좀 무식한 방법이지만 프로그램상에서 1부터 사용할 최대 Port까지의
모든 Port를 따로따로 Open 한다던가 -_-;; - 물론 말씀해주신대로 예약포트는 제외해야겠죠ㅎㅎ)
음.. 어쨋든 답변주신 내용은 결론적으론 TCP나 UDP로는 제가 원하는 방향으로의 프로그래밍이 불가능하단 이야기가 되겠군요..
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
패킷 스니핑(Packet Sniffing) 기능을 원하시나요?
원하시는 기능이 packet sniffer 툴의 기능과 유사한 것 같습니다
그쪽으로 자료를 찾아보심이 좋을 것 같습니다 :)
앗 잘 모르는 내용이네요..
먼 여행이 될 것 같은 기분은 착각이겠죠 ㅎㅎ
Keyword 제공에 감사합니다~! ㅎㅎ
찾아보고 댜시 돌아오겠습니다 :)
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
예를들어 임베디드 보드에서 이더넷 패킷 드라이버를
예를들어 임베디드 보드에서 이더넷 패킷 드라이버를 만든다면,
어떤 프로토콜, 어떤 포트, 어떤 주소이던지에 관계없이
처리가 가능하겠습니다.
하지만 그런환경은 아니시겠죠?
예제 코드 입니다.
Just do it!
댓글 달기