#include "def" #define MAXIDLETIME 1 main(argc, argv ) int argc; char *argv[]; { int sd; struct sockaddr_in6 DTserver; char buff[1024]; struct sockaddr_in6 cliaddr; struct hostent *hp, *gethostbyname(); int len; int n; int i; fd_set rset; sd = socket (AF_INET6,SOCK_SEQPACKET,IPPROTO_SCTP); i = MAXIDLETIME; setsockopt(sd, IPPROTO_SCTP, SCTP_AUTOCLOSE, &i, sizeof (i)) ; listen(sd, 1); DTserver.sin6_family = AF_INET6; if ( inet_pton(AF_INET6, argv[1], &DTserver.sin6_addr) <= 0) { perror("inet_pton error"); exit(-1); } DTserver.sin6_port = htons(atoi(argv[1])); len = sizeof(DTserver); sendto(sd, "HI", 3, 0, (SA *) &DTserver, len); listen(sd, 1); len = sizeof(cliaddr); n = recvfrom (sd, buff, sizeof(buff), 0, (SA *) &cliaddr, &len); buff[n] = NULL; printf("got %s\n", buff); printf("from %s, port %d\n", inet_ntop(AF_INET6, &cliaddr.sin6_addr, buff, sizeof(buff)), ntohs(cliaddr.sin6_port)); }