#include "dccp.h" #include #include #include #include #include #include #define SOCK_DCCP 6 #define SOL_DCCP 269 #define IPPROTO_DCCP 33 #include #include int numpackets[256]; void serve(int sockfd) { ssize_t n; unsigned char buffer[MAXLINE]; int i; again: while ((n=read(sockfd, buffer, MAXLINE)) > 0) { buffer[n]='\0'; numpackets[buffer[0]]++; printf("%d: %s - ", (unsigned int)time(0), buffer); for(i=0;i<256;i++) { if(numpackets[i]>0) printf("(%d->%d) ", i, numpackets[i]); } printf("\n"); fflush(NULL); } if (n < 0 && errno == EINTR) goto again; else if (n < 0) printf("read error\n"); } int main(int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr, cliaddr; socklen_t clilen; if ((listenfd = socket(AF_INET,SOCK_DCCP,IPPROTO_DCCP)) < 0) { printf("socket error"); return 1; } servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(APPPORT); bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); listen(listenfd, 0); clilen = sizeof(cliaddr); connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen); close (listenfd); serve(connfd); return 0; }