
CS485G Spring 2015 50
10. Implementation of open clientfd
1 int open_clientfd(char
*
hostname, int port) {
2 int toserverfd;
3 struct hostent
*
serverHostEntry;
4 struct sockaddr_in serveraddr;
5 if ((toserverfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
6 return -1; /
*
check errno
*
/
7 // AF_INET: internet; SOCK_STREAM: reliable; 0: normal
8 /
*
Fill in the server’s IP address and port
*
/
9 if ((serverHostEntry = gethostbyname(hostname)) == NULL)
10 return -2; /
*
check h_errno for cause of error
*
/
11 bzero((char
*
) &serveraddr, sizeof(serveraddr));
12 serveraddr.sin_family = AF_INET;
13 bcopy((char
*
)serverHostEntry->h_addr_list[0],
14 (char
*
)&serveraddr.sin_addr.s_addr, serverHostEntry->h_length);
15 serveraddr.sin_port = htons(port);
16
17 /
*
Establish a connection with the server
*
/
18 if (connect(toserverfd, (SA
*
) &serveraddr, sizeof(serveraddr)) < 0)
19 return -1;
20 return toserverfd;
21 } // open_clientfd
Comentarios a estos manuales