#include #include #include #include #include #include #define PORT 12342 int main(void) { int s, cc; struct sockaddr_in addr; if ((s = socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP)) < 0) { perror("socket"); exit(1); } memset(&addr, '\0', sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(PORT); if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("bind"); exit(1); } if (listen(s, 5) < 0) { perror("listen"); exit(1); } for (;;) { char buf[128]; struct iovec iov[1] = {{.iov_base = buf, .iov_len = sizeof(buf)}}; struct msghdr msg = { .msg_name = &addr, .msg_namelen = sizeof(addr), .msg_iov = iov, .msg_iovlen = sizeof(iov)/sizeof(iov[0]), .msg_control = NULL, .msg_controllen = 0, .msg_flags = 0 }; printf("Waiting for message\n"); cc = recvmsg(s, &msg, 0); printf("Got msg, len = %d\n", cc); sendmsg(s, &msg, 0); } }