Monday, February 23, 2009

TCP Echo Client: main Function

str_echo function: echoes data on a socket.

 1 #include    "unp.h"

2 void
3 str_echo(int sockfd)
4 {
5 ssize_t n;
6 char buf[MAXLINE];

7 again:
8 while ( (n = read(sockfd, buf, MAXLINE)) > 0)
9 Writen(sockfd, buf, n);

10 if (n < 0 && errno == EINTR)
11 goto again;
12 else if (n < 0)
13 err_sys("str_echo: read error");
14 }


TCP echo client



1 #include    "unp.h"



2 int

3 main(int argc, char **argv)


4 {


5     int     sockfd;


6     struct sockaddr_in servaddr;



7     if (argc != 2)

8         err_quit("usage: tcpcli <IPaddress>");



9     sockfd = Socket(AF_INET, SOCK_STREAM, 0);



10     bzero(&servaddr, sizeof(servaddr));

11     servaddr.sin_family = AF_INET;


12     servaddr.sin_port = htons(SERV_PORT);


13     Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);



14     Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));



15     str_cli(stdin, sockfd);     /* do it all */



16     exit(0);

17 }



Create socket, fill in Internet socket address structure



9–13 A TCP socket is created and an Internet socket address structure is filled in with the server's IP address and port number. We take the server's IP address from the command-line argument and the server's well-known port (SERV_PORT) is from our unp.h header.





Connect to server



14–15 connect establishes the connection with the server. The function str_cli handles the rest of the client processing.



No comments: