
CS485G Spring 2015 52
12. Implementation of open listenfd
1 int open_listenfd(int port) {
2 int listenfd, optval=1;
3 struct sockaddr_in serveraddr;
4
5 /
*
Create a socket descriptor
*
/
6 if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
7 return -1;
8 // AF_INET: internet; SOCK_STREAM: reliable; 0: normal
9
10 /
*
Allow reuse of address
*
/
11 if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR,
12 (const void
*
)&optval , sizeof(int)) < 0)
13 return -1;
14
15 /
*
let listenfd be an endpoint for all requests
16 to port on any IP address for this host
*
/
17 bzero((char
*
) &serveraddr, sizeof(serveraddr));
18 serveraddr.sin_family = AF_INET;
19 serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
20 serveraddr.sin_port = htons((unsigned short)port);
21 if (bind(
22 listenfd,
23 (SA
*
)&serveraddr,
24 sizeof(serveraddr)) < 0)
25 return -1;
26
27 /
*
Ready listenfd to accept connection requests
*
/
28 if (listen(listenfd, LISTENQ) < 0)
29 return -1;
30 return listenfd;
31 } // open_listenfd
54 More about files
1. Lecture 29, 4/13/2015
2. Short counts: when the amount of data read/written is not the size
of the buffer.
Comentarios a estos manuales