Open System Services Programmer's Guide
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);
/*
Sets socket to listen:
*/
if (listen(sock, 1) < 0)
{
perror("Listen Error");
exit(-1);
}
/*
Starts server:
*/
while(1)
{
bzero(&accept_addr, sizeof(accept_addr));
Threaded Application Examples 337