#include "def" int main(int argc, char **argv) { int sockfd, n; int len; char buff[1024]; struct sockaddr_in servaddr, cliaddr; struct hostent *hp, *gethostbyname(); if (argc < 3){ printf("Usage DayTimeClient4SctpS \n"); exit(-1); } if ( (sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0){ perror("socket error"); exit(-1); } printf("created socket\n"); fflush(stdout); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; hp = gethostbyname(argv[1]); bcopy ( hp->h_addr, &(servaddr.sin_addr.s_addr), hp->h_length); servaddr.sin_port = htons(atoi(argv[2])); /* daytime server */ printf("connecting socket\n"); fflush(stdout); if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0) { perror("connect error"); exit(-1); } printf("connected\n"); fflush(stdout); write(sockfd,"HI",2); len = sizeof(cliaddr); getsockname(sockfd, (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(sockfd, (SA *) &servaddr, &len); printf("My peer: %s, port %d\n", inet_ntop(AF_INET, &servaddr.sin_addr, buff, sizeof(buff)), ntohs(servaddr.sin_port)); while ( (n = read(sockfd, buff, 1024)) > 0) { buff[n] = 0; /* null terminate */ printf("Got: %s\n", buff); } if (n < 0){ perror("read error"); exit(-1); } close (sockfd); exit(0); }