Open System Services Programmer's Guide
/*
Defines one pthread_t per request we intend to handle:
*/
pthread_t my_thread;
pthread_attr_t my_attr;
/*
Turns on concurrency:
*/
if(pthread_setconcurrency(1))
{
perror("pthread_setconcurrency");
exit(-1);
}
/*
Initializes attribute:
*/
if(pthread_attr_init(&my_attr))
{
perror("pthread_attr_init");
exit(-1);
}
/*
Sets detach Attribute:
*/
if(pthread_attr_setdetachstate(&my_attr,PTHREAD_CREATE_DETACHED))
{
perror("pthread_attr_setdetachstate");
exit(-1);
}
/*
Creates socket:
*/
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("Socket Error");
exit(-1);
}
/*
Sets up Bind:
*/
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(inet_addr_port);
if (bind(sock, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
{
perror("Bind Error");
exit(-1);
}
fd_make_nonblock(sock);
434 Using the POSIX User Thread (PUT) Model Library