/* Modifikation unseres Timeservers, * nur zur DEMO, so nicht sinnvoll */ #include #include #include #include #include #include #include #include #include #include #define SERVPORT 11011 #define MAXLINE 256 int main() { struct sockaddr_in addr, client_addr; size_t client_addr_len = sizeof(client_addr); char recvline[MAXLINE]; int sfd; memset(&addr, 0, sizeof(addr)); // mit 0en fuellen addr.sin_family = AF_INET; // UDP-Verbindung addr.sin_port = htons(SERVPORT);// Port eintragen, Network Byte Order addr.sin_addr.s_addr = htonl(INADDR_ANY); if ((sfd = socket(AF_INET, SOCK_DGRAM, 0)) <0) // socket erzeugen perror("socket"), exit(1); if (bind(sfd, (struct sockaddr *) &addr, sizeof(addr)) <0) perror("bind"), exit(2); while (1) { if ( (recvfrom(sfd, recvline,MAXLINE,0, (struct sockaddr *) &client_addr, & client_addr_len)) < 0) { perror("Server -- recfrom"); exit(3); } time_t clock; char *tbuf; time(&clock); // aktuelle Uhrzeit holen tbuf = ctime(&clock); // in String schreiben if (sendto(sfd, tbuf, strlen(tbuf),0, (struct sockaddr *) & client_addr, sizeof(client_addr)) < strlen(tbuf) ) { perror("Server -- sendto"); exit(4); } } exit(0); // seldomly reached }