Unix server programmeren en een paar vragen

Status
Niet open voor verdere reacties.

eMPaTi

Gebruiker
Lid geworden
31 mei 2007
Berichten
6
Hallo,
Aan de hand van andere topics heb ik meeste vragen opgelost maar ik heb er een paar vragen over hieronder code die ik niet uit kan komen.

Code:
int sockfd ;
char buf[MAXBUFLEN] ;

struct    sockaddr_in my_addr;   
struct    sockaddr_in their_addr; 

void initserv() {
    if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
        perror("socket");
        abort();
    }
    my_addr.sin_family = AF_INET;              
    my_addr.sin_port = htons(513);               
    my_addr.sin_addr.s_addr = INADDR_ANY;
    memset(&(my_addr.sin_zero), '\0', 8);        

    if (bind(sockfd, (struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1) {
        perror("bind");
        abort();
    }
    addr_len = sizeof(struct sockaddr);
}
char *MyRecv() {
    int numbytes = 0 ;
    if ((numbytes=recvfrom(sockfd, buf, MAXBUFLEN-1 , 0,(struct sockaddr *)&their_addr, &addr_len)) == -1) {
        perror("recvfrom");
        abort();
    }
    buf[numbytes] = '\0';
    return buf ;
}
main() {
	char *data ;
	initserv() ;

	while(1) {
		data = MyRecv() ;
	}
}

- Is dit een TCP of UDP server en aan de hand van welke code heb je dit bepaalt?
*UDP, dat begrijp ik via code if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) == -1)
docket wordt gemaakt SOCK_DGRAM dus UDP?

- Onder Windows werkt deze server direct maar onder Unix mag hij alleen door de superuser worden gestart, wat is hiervan de reden?
*Want, onder unix door BSD librarys kunnen service porten alleen door superuser worden gestart. service poorten zijn 0-1023

-Maak de server af de bedoeling is dat hij de data die hij ontvangt echod naar de client?
*Eind van de code plaats ik volgende;

main() {
char *data ;
initserv() ;
while(1) {
data = MySend() ;
}
}
Er moet toch nog ergens sendto komen?

-Kan deze server ook concurrent gemaakt worden?
Wat is bedoeling van concurrent?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan