CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): doriya (도리야)
날 짜 (Date): 1995년08월12일(토) 11시05분34초 KDT
제 목(Title): Re] connect에서 read, write



전에 답한것이 도움이 안되어 유감이군요

통신 프로그램에 관심이 많으시면 전에도 말씀드렸는데

Stevens의 UNIX Network Programming을 보시죠 
거의 통신 프로그램 책의 바이블이니깐 ...

이책의 6장에 두 호스트간의 TCP 통신시 포트 이용에 대해 
자세히 나와있죠.

서비스를 제공하는 서버쪽에서는 "listen"소켓에 어드레스를 bind
하기위해 반드시 포트번호를 적어야합니다. 단 이것은 
두 호스트간의 TCP, UDP통신시 해야되고 한 호스트에서의
프로세스간 통신 즉 IPC(InterProcess Communication)에서는 
앞의 답에서 설명했듯이 가상 통신 화일을 사용하므로 포트번호를
적을 필요가 없습니다.

서비스를 제공받는 클라이언트쪽에서는 서버 프로세스의 
"listen" 소켓으로 connection을 요청해야 하므로 바드시
그 소켓의 포트주소를 알아야 
합니다.쌐쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌖쌖쌑쌖쌖쌖쌖쌖쌖쌐쌒쌒쌒쌒쌒쌒쌒쌐쌖쌖쌖
쌖쌐쌒쌒쌐쌐쌐쌐 
쌐쌐쌐쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌒쌐쌒쌒쌒쌒쌒쌒�
C쌒쌒쌒쌖쌖쌐쌐쌐쌐쌐쌐쌐쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑쌑포트주소는 16비트 
integer를 사용합니다.

대부분 유명한 서버 프로세스들의 포트주소는 reserved port로써 
/etc/services에 나와 있습니다. 이 주소들은 
getservbyname() 을 이용해 알 수 있습니다.

프로그래머 입장에서 볼때 포트 주소를 직접 프로그램에 넣든지
아니면 /etc/services에 넣은 후 getservbyname()을 통해 포트 주소를 
가져올 수 있습니다. 서버쪽 포트주소를 모르고 자기 호스트에서
/etc/services 화일에 서버 프로세스 이름과 포트 주소가 없으면
어쩔 수 없죠..... 

자기가 서버, 클라이언트 둘다 프로그래밍하면 당연히 포트주소를
자기가 결정하니깐 문제가 안되고
/etc/services 화일에 나와있는 서버와 접속하려면 
getservbyname()을 사용하면 되고 
이것도 저것도 아니면 서버의 포트 주소를 직접 물어서라도 
알아내야 겠죠, 그방법밖에 없다고 생각합니다.
read(), write()는 아무데서나 다 할 수 있습니다. 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.