void main() {
int maxfdp;
fd_set rset;
int fd_ctl_lstn, fd_data_lstn;
struct sockaddr_in dat_sock_addr, ctl_sock_addr;
/*set up Data socket*/
if((fd_data_lstn=socket(AF_INET, SOCK_STREAM, 0)) = -1) {
//Change to a better error handler
printf("Error in data socket creation, %d", fd_data_lstn);
exit(1);
}
bzero(&dat_sock_addr, sizeof(dat_sock_addr));
dat_sock_addr.sin_faily = AF_INET;
dat_sock_addr.s_addr = htonl(INADDR_ANY);
dat_sock_addr.sin_port = htons(DATPORTNUM); //need definition
if(bind(fd_data_lstn, (struct sock_addr *)&dat_sock_addr, sizeof(dat_sock_addr)) == -1) {
//Change to a better error handler
printf("Error in data socket binding")
exit(1);
}
if(listen(fd_data_lstn, LESTENQ) == -1) {
//change to a better error handler
printf("Error in data listen conversion\n");
exit(1);
}
/*Set up the Command socket*/
if((fd_ctl_lstn=socket(AF_INET, SOCK_STREAM, 0)) = -1) {
//Change to a better error handler
printf("Error in control socket creation, %d", fd_ctl_lstn);
exit(1);
}
bzero(&ctl_sock_addr, sizeof(dat_sock_addr));
ctl_sock_addr.sin_faily = AF_INET;
ctl_sock_addr.s_addr = htonl(INADDR_ANY);
ctl_sock_addr.sin_port = htons(DATPORTNUM); //need definition
if(bind(fd_ctl_lstn, (struct sock_addr *)&ctl_sock_addr, sizeof(ctl_sock_addr)) == -1) {
//Change to a better error handler
printf("Error in control socket binding")
exit(1);
}
if(listen(fd_ctl_lstn, LESTENQ) == -1) {
//change to a better error handler
printf("Error in control listen conversion\n");
exit(1);
}
while(1) {
//Build the FD_set array to be passed into the select system call. This
//requires special macros FD_SET and FD_ZERO.
//Missing code here for readability
select(maxfdp, &rset, NULL, NULL, NULL); //Wait until one of the socket descriptors in "rset" has data
if(FD_ISET(fd_data_lstn, &rset)) {
//call function to accept connection on data stream
}
if(FD_ISET(fd_ctl_lstn, $rset)) {
//call function to accept connection on control stream
}
}
}