我想寫一個多客戶套接字程序,
但是當accept階段我得到Bad文件描述符。
我該如何糾正我的代碼?謝謝!
套接字壞文件描述符
這裏是我的代碼
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);
}
通過[編輯它(http://stackoverflow.com/posts/13287359/edit)請在你的問題你的代碼的相關部分。鍵盤將隨時消失。 – 2012-11-08 10:59:21