0
linux에서 gcc에 다중 스레드 에코 서버를 구현하고 있습니다. 서버 소켓을 포트 번호 3000
에 바인드합니다. 아래는 바인딩에 사용되는 코드입니다.서버 소켓이 지정된 포트에 바인딩되지 않았습니다.
EchoServer.c I는 다음과 같이 서버의 포트 번호 47115
결합 볼 그러나
struct sockaddr_in sock_var;
int serverFileDiscriptor=socket(AF_INET,SOCK_STREAM,0);
sock_var.sin_addr.s_addr=inet_addr("0.0.0.0");
sock_var.sin_port=3000;
sock_var.sin_family=AF_INET;
bind(serverFileDiscriptor,(struct sockaddr*)&sock_var,sizeof(sock_var));
.
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:47115 0.0.0.0:* LISTEN 0 79942 22843/./EchoServer
내 이해 당으로 만
0
으로 포트 번호를 지정하면 임의의 사용되지 않는 포트에 소켓을 바인드합니다. 이것에 대한 가능한 이유는 무엇일까요? 서버가 루트 사용자로 시작되었으며 포트 번호
3000
이 사용되지 않고 사용 가능함을 확인했습니다.
'sockaddr_in.sin_port'가 'man 페이지'의 '네트워크 바이트 순서의 포트'*로 지정되어 있습니다. * – EJP
@EJP - 정리해 주셔서 감사합니다. – Learner