멀티 클라이언트 소켓 프로그램,
을 쓰고 싶지만 accept 단계에서 불량 파일 기술자를 얻습니다.
코드를 수정하려면 어떻게해야합니까? 감사!
소켓 불량 파일 설명자
여기에 내 코드
http://codepad.org/q0N1jTgz
감사합니다!
여기 내 코드 부분입니다!
while(1)
{
struct sockaddr_in client_addr;
int addrlen = sizeof(client_addr);
/*Accept*/
if(clientfd = accept(sockfd, (struct sockaddr *)&client_addr, (socklen_t*)&addrlen) < 0)
{
perror("Accpet Error");
close(sockfd);
exit(-1);
}
/*Fork process*/
if(child = fork() < 0)
{
perror("Fork Error");
close(sockfd);
exit(-1);
}
else if(child == 0)
{
int my_client = clientfd;
close(sockfd);
send(my_client, welcome, sizeof(welcome), 0);
while ((res = recv(my_client, buffer1, sizeof(buffer1), 0)) > 0)
{
string command(buffer1);
cout << "receive from client:" << command << ", " << res << " bytes\n";
memset(buffer1, '\0', sizeof(buffer1));
}
}
close(clientfd);
}
g++
를 사용하는 경우 예컨대이 (http://stackoverflow.com/posts/13287359/edit)을 편집]하여 해당 코드의 관련 부분을 포함하십시오-Wall
및-Wextra
플래그를 사용합니다. 코드 패드는 언제든지 사라질 것입니다. –