Я пытаюсь изучить программирование сокета c/C++, но функция привязки работает нормально или не возвращает то, что она должна вернуть, вместо «int», возвращающего «__bind», я не знаю, что случилось, и я искал, что чтобы сделать и не из не приходятВозвращаемое значение для bind не является int?
пожалуйста, помогите
Server::Server()
: sock_fd(0)
{
// number used as index in to the vector of client fd
num = 0;
clino.reserve(10);
clientfd.reserve(10);
if((sock_fd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
perror("Server constructor : cannot open socekt");
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(TCP_PORT);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
//error returning __bind<int&, sockaddr*, unsigned long>
int b = bind(sock_fd,(sockaddr *)&servaddr, sizeof(servaddr));
//this bind function is acting up, dosent want to let me check for errors lol
printf("printing..\n");
}
int Server::waitforconnections()
{
printf("listening....\n");
if(listen(sock_fd, 5) < 0)
{
perror("Server constructor : listen error");
}
for(;;)
{
clino[num] = num + 1;
printf("accepting.. \n");
clientfd[clino[num]] = accept(sock_fd, (sockaddr *)&cliaddr, clilen);
clisocktoaddr[clientfd[num]] = cliaddr;
if(clientfd[num] < 0)
{
perror("waitforconnections: accept error");
}
//no client number 0
if(do_service() < 0)
{
perror("waitforconnections: cannot do service, !!FATAL ERROR!!");
_exit(-1);
}
//if i am going to use kids then they must be some inter processing communication don't forget !!
num++;
}
return (0);
}
'std :: bind' возвращает объект функции, а не значение. Пожалуйста, прочитайте [docs] (http://en.cppreference.com/w/cpp/utility/functional/bind). – Rakete1111
В общем, вы, кажется, немного не знакомы с C++. Например, 'bzero' не было бы необходимо, если бы вы определили его как' sockaddr_in servaddr = {AF_INET, htons (TCP_PORT), {htonl (INADDR_ANY)}} – MSalters
о, действительно, я этого не сделал, спасибо вы так много –