Below is my code for Linux. I am implementing a client / server application, and below is a .cpp server file.
int main() { int serverFd, clientFd, serverLen, clientLen; struct sockaddr_un serverAddress; struct sockaddr_un clientAddress; struct sockaddr* serverSockAddrPtr; struct sockaddr* clientSockAddrPtr; signal (SIGCHLD, SIG_IGN); serverSockAddrPtr = (struct sockaddr*) &serverAddress; serverLen = sizeof (serverAddress); clientSockAddrPtr = (struct sockaddr*) &clientAddress; clientLen = sizeof (clientAddress); serverFd = socket (AF_LOCAL, SOCK_STREAM, DEFAULT_PROTOCOL); serverAddress.sun_family = AF_LOCAL; strcpy (serverAddress.sun_path, "css"); unlink ("css"); bind (serverFd, serverSockAddrPtr, serverLen); listen (serverFd, 5); readData(); while (1) { clientFd = accept (serverFd, clientSockAddrPtr, &clientLen); if (fork () == 0) { printf (""); printf ("\nRunner server program. . .\n\n"); printf ("Country Directory Server Started!\n"); close (clientFd); exit ( 0); } else close (clientFd); }
}
When I tried to compile it, an error message will appear that shows.
server.cpp:237:67: error: invalid conversion from 'int*' to 'socklen_t*' server.cpp:237:67: error: initializing argument 3 of 'int accept(int, sockaddr*, socklen_t*)'
He points to this line.
clientFd = accept (serverFd, clientSockAddrPtr, &clientLen);
I really don't know how to solve this problem. Thanks in advance to those who helped! :)
source share