rendered paste body#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/select.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/sctp.h>#define SIZE 1024char buf[SIZE]#define STDIN 0;char *msg = "hello\n";define ECHO_PORT 420int main(int argc, char *argv[]) { int sockfd; int nread, nsent; int flags, len; struct sockaddr_in serv_addr; struct sctp_sndrcvinfo sinfo; fd_set readfds; if (argc != 2) { fprintf(stderr, "usage: %s IPAddr\n", argv[0]); exit(1); } sockfd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); if (sockfd < 0) { perror("Socket creation failed"); exit(2); } serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(ECHO_PORT); if (connect(sockfd, (struct sockaddr*) & serv_addr, sizeof(serv_addr)) < 0) { perror("connect to server failed"); exit(3); } print("Connected"); while (1) { FD_CLR(sockfd, &readfds); FD_SET(sockfd, &readfds); FD_SET(STDIN, &readfds); printf("Selecting\n"); select(sockfd+1, &readfds, NULL, NULL, NULL); if (FD_ISSET(STDIN, &readfds)) { printf("reading from stdin\n"); nread = read(0, buf, SIZE); if (nread <= 0) break; sendto(sockfd, bug, nread, 0, (struct *sockaddr) &serv_addr, sizeof(serv_addr)); } else if (FD_ISSET(sockfd, &readfds)) { printf("reading from socket\n"); len = sizeof(serv_addr); nread = sctp_recvmsg(sockfd, buf, SIZE, (struct sockaddr*) &serv_addr, &len, &sinfo, &flags); write(1, buf, nread); } } close(sockfd); exit(0);}