Tuesday, April 5, 2011

tcp client in unix/linux

//tcp client prog

#include    "unp.h"
void
str_cli(FILE *fp, int sockfd)
{
 char sendline[MAXLINE], recvline[MAXLINE];
 while (Fgets(sendline, MAXLINE, fp) != NULL) {
  Writen(sockfd, sendline, strlen(sendline));
  if (Readline(sockfd, recvline, MAXLINE) == 0)
   err_quit("str_cli: server terminated prematurely");
  Fputs(recvline, stdout);
 }
}
int
main(int argc, char **argv)
{
 int     sockfd;
 struct sockaddr_in servaddr;
 if (argc != 2)
  err_quit("usage: tcpcli <IPaddress>");
 sockfd = Socket(AF_INET, SOCK_STREAM, 0);
 bzero(&servaddr, sizeof(servaddr));
 servaddr.sin_family = AF_INET;
 servaddr.sin_port = htons(SERV_PORT);
 Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
 Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));
 str_cli(stdin, sockfd);  /* do it all */
 exit(0);
}
//tcp server
#include "unp.h"
void
str_echo(int sockfd)
{
 long  arg1, arg2;
 ssize_t  n;
 char  line[MAXLINE];
 for ( ; ; ) {
  if ( (n = Readline(sockfd, line, MAXLINE)) == 0)
   return;  /* connection closed by other end */
  n = strlen(line);
  Writen(sockfd, line, n);
 }
}
int
main(int argc, char **argv)
{
 int     listenfd, connfd;
 pid_t    childpid;
 socklen_t   clilen;
 struct sockaddr_in cliaddr, servaddr;
 listenfd = Socket(AF_INET, SOCK_STREAM, 0);
 bzero(&servaddr, sizeof(servaddr));
 servaddr.sin_family      = AF_INET;
 servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
 servaddr.sin_port        = htons(SERV_PORT);
 Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
 Listen(listenfd, LISTENQ);
        printf("Server Running on Port %d\n", SERV_PORT);
 for ( ; ; ) {
  clilen = sizeof(cliaddr);
  connfd = Accept(listenfd, (SA *) &cliaddr, &clilen);
  if ( (childpid = Fork()) == 0) { /* child process */
   Close(listenfd); /* close listening socket */
   str_echo(connfd); /* process the request */
   exit(0);
  }
  Close(connfd);   /* parent closes connected socket */
 }
}

1 comment:

  1. Hi sir,This is sudheer...Ur Bolg is very good..am final year IT student...i want the code for fuctions Writen and Readline which are there in unp.h header file.....If u send the unp.h header file complete functions it wil be helpful to me ...
    Thank You very much sir....

    ReplyDelete