#include "unp.h" void dg_cli_connect(FILE*, FILE *, int, const SA *, socklen_t); int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr; FILE * log = stdout; if (argc != 2) err_quit("usage: udpcli "); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); Inet_pton(AF_INET, argv[1], &servaddr.sin_addr); sockfd = Socket(AF_INET, SOCK_DGRAM, 0); fprintf (log,"Calling dg_cli_connect\n"); fflush(log); dg_cli_connect(log,stdin, sockfd, (SA *) &servaddr, sizeof(servaddr)); exit(0); } void dg_cli_connect(FILE* log, FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) { int n; char sendline[MAXLINE], recvline[MAXLINE + 1]; fprintf (log,"Before Connect\n"); fflush (log); if ((n=connect(sockfd, (SA *) pservaddr, servlen)) != 0) { fprintf (log,"problem with connect with errno %d\n",errno); exit(0); } fprintf (log,"Connect returned successfully with value %d\n",n); fflush (log); while (Fgets(sendline, MAXLINE, fp) != NULL) { fprintf (log,"Sending to server %s\n",sendline); if ((n=write(sockfd, sendline, strlen(sendline))) == -1) { fprintf (log,"problem with write with errno %d\n",errno); exit(0); } fprintf (log,"Write returned successfully with value %d\n",n); n = Read(sockfd, recvline, MAXLINE); fprintf (log,"read successful from server with value %d\n",n); recvline[n] = 0; /* null terminate */ Fputs(recvline, stdout); } }