#include "def" main() { int listenfd, connfd; socklen_t len; struct sockaddr_in servaddr, cliaddr; char buff[1024]; time_t ticks; listenfd = socket (AF_INET,SOCK_STREAM,IPPROTO_SCTP); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(1313); if ( bind( listenfd, (SA *) &servaddr, sizeof(servaddr) ) < 0 ){ printf("error binding\n"); exit(-1) ; } listen(listenfd,1); for ( ; ; ) { len = sizeof(cliaddr); connfd = accept(listenfd, (SA *) &cliaddr, &len); printf("connection from %s, port %d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff)), ntohs(cliaddr.sin_port)); len = sizeof(cliaddr); getsockname(connfd, (SA *) &cliaddr, &len); printf("my end: %s, port %d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff)), ntohs(cliaddr.sin_port)); len = sizeof(cliaddr); getpeername(connfd, (SA *) &cliaddr, &len); printf("peer end: from %s, port %d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff)), ntohs(cliaddr.sin_port)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); write(connfd, buff, strlen(buff)); printf("wrote the date as %s\n", buff); close(connfd); } }