#include "def" main(argc, argv ) int argc; char *argv[]; { int sd; int i; struct sockaddr_in6 server; char buff[1024]; int rc; struct sockaddr_in6 cliaddr; time_t ticks; int len; if (argc < 2){ printf("Usage DayTimeServer6SctpQ \n"); exit(-1); } server.sin6_family = AF_INET6; server.sin6_addr = in6addr_any; server.sin6_port = htons(atoi(argv[1])); sd = socket (AF_INET6,SOCK_SEQPACKET,IPPROTO_SCTP); if ( bind( sd, (SA *) &server, sizeof(server) ) < 0 ){ printf("error binding\n"); exit(-1) ; } listen(sd, 1); len = sizeof(server); getsockname(sd, (SA *) &server, &len); printf("My end: %s, port %d\n", inet_ntop(AF_INET6, &server.sin6_addr, buff, sizeof(buff)), ntohs(server.sin6_port)); for(;;){ len = sizeof(cliaddr); rc = recvfrom (sd, buff, sizeof(buff), 0, (SA *) &cliaddr, &len); printf("Got request from %s, port %d\n", inet_ntop(AF_INET6, &cliaddr.sin6_addr, buff, sizeof(buff)), ntohs(cliaddr.sin6_port)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); len = sizeof(cliaddr); if ((sendto(sd, buff, strlen(buff), 0, (SA *) &cliaddr, len)) < 0){ perror("sendto()"); } printf("Sent %s\n", buff); } }