#include "def" main(argc, argv ) int argc; char *argv[]; { int sd, sd2; struct sockaddr_in6 server; char buff[1024]; int rc; struct sockaddr_in6 cliaddr; time_t ticks; int len; server.sin6_family = AF_INET6; server.sin6_addr = in6addr_any; server.sin6_port = htons(10111); sd = socket (AF_INET6,SOCK_SEQPACKET,IPPROTO_SCTP); sd2 = socket (AF_INET6,SOCK_SEQPACKET,IPPROTO_SCTP); if ( bind( sd, (SA *) &server, sizeof(server) ) < 0 ){ printf("error binding\n"); exit(-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)); listen(sd, 1); 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); sendto(sd2, buff, strlen(buff), 0, (SA *) &cliaddr, len); } }