작은 http 서버가있는 응용 프로그램을 개발했습니다.내 리눅스 응용 프로그램 포트가 멈 추면 다른 서비스로 가져옵니다.
부팅 중에 내 응용 프로그램이 시작되었습니다. 내가 죽이면 (예를 들어 kill -9
), http 서버 포트는 다른 데몬 (broadcom의 acsd)에 의해 직접 취해질 것입니다.
나는 drop-bear와 같은 동작을 시도했지만 문제는 재현되지 않습니다. 내가 드롭 베어를 죽이면 acsd는 포트를 사용하지 않습니다. 내 서버의 코드 뒤에 여기
: 내 HTTP 서버에서 잘못하고있어 무엇
void http_server_init(void)
{
struct sockaddr_in server;
int cr_port;
for(;;) {
cr_port = conf.port;
int i = (DEFAULT_PORT == cr_port)? 1 : 0;
//Create socket
cr_socket_desc = socket(AF_INET , SOCK_STREAM , 0);
if (cr_socket_desc == -1)
{
LOG (ERROR,"Could not open server socket, Error no is : %d, Error description is : %s", errno, strerror(errno));
sleep(1);
continue;
}
/* enable SO_REUSEADDR */
int reusaddr = 1;
if (setsockopt(cr_socket_desc, SOL_SOCKET, SO_REUSEADDR, &reusaddr, sizeof(int)) < 0) {
LOG (WARNING,"setsockopt(SO_REUSEADDR) failed");
}
//Prepare the sockaddr_in structure
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
for(;;i++) {
server.sin_port = htons(cr_port);
//Bind
if(bind(cr_socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
//print the error message
LOG (ERROR,"Could not bind server socket on the port %d, Error no is : %d, Error description is : %s", cr_port, errno, strerror(errno));
cr_port = DEFAULT_PORT + i;
LOG (INFO,"Trying to use another port: %d", cr_port);
continue;
}
break;
}
break;
}
LOG (INFO,"server initiated with the port: %d", cr_port);
}
?
? 그것을 바꿔 보려 했니? – FredMaggiowski
포트는 기본적으로 51005 –
입니다. 잘못된 것은 아닙니다. 뭐라구? –