pickzy.com

C  |  C++  |  Objective-C  |  VC++  |  Win32  |  MFC  |  Java  |  Php  |  Delphi  |  Visual Basic  |  .Net  |  Networking  |  General  |  Games  |  Jobs  |  Javascript  |  




Menu

pickSourcecode.com


        

 




 

C > Programs

 

C TCP socket example Server and Client program

//  server.c

/*  A  simple  server  in  the  internet  domain  using  TCP
     The  port  number  is  passed  as  an  argument  */

#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>

#include <arpa/inet.h> 
#include <assert.h> 
#include <errno.h> 
#include <signal.h> 
#include <string.h> 
#include <sys/wait.h> 
#include <netdb.h> 
#include <unistd.h> 

struct Test {

char name[20];
int  num;
} test_t;



void error(char *msg)
{

    perror(msg);

    exit(1);

}


int main(int argc, char *argv[])
{

     
int sockfd, newsockfd, portno, clilen;
     
char buffer[256];
     struct sockaddr_in serv_addr, cli_addr;

     
int n;
     struct Test test_name;


     
if (argc < 2) {
         fprintf(stderr,"ERROR, no port provided\n");

         exit(1);

     }

     sockfd = socket(AF_INET, SOCK_STREAM, 0);

     
if (sockfd < 0) 
        error("ERROR opening socket");

     bzero((
char *) &serv_addr, sizeof(serv_addr));
     portno = atoi(argv[1]);

     serv_addr.sin_family = AF_INET;

     serv_addr.sin_addr.s_addr = INADDR_ANY;

     serv_addr.sin_port = htons(portno);

     
if (bind(sockfd, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0) 

              error("ERROR on binding");

     listen(sockfd,5);

     clilen = sizeof(cli_addr);

     newsockfd = accept(sockfd, 

                 (struct sockaddr *) &cli_addr, 

                 &clilen);

     
if (newsockfd < 0) 
          error("ERROR on accept");

     bzero(buffer,256);

     n = read(newsockfd,&test_name,256);

     
if (n < 0) error("ERROR reading from socket");
     printf("Here is the message: %s\n%d\n",test_name.name,test_name.num);

     n = write(newsockfd,"I got your message",18);

     
if (n < 0) error("ERROR writing to socket");
     return 0; 

}



//  Client.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h> 
#include <stdlib.h>


#include <arpa/inet.h> 
#include <assert.h> 
#include <errno.h> 
#include <signal.h> 
#include <string.h> 
#include <sys/wait.h> 
#include <netdb.h> 
#include <unistd.h> 

struct Test {

char name[20];
int  num;
} test_t;



void error(char *msg)
{

    perror(msg);

    exit(1);

}


int main(int argc, char *argv[])
{

    
int sockfd, portno, n;
    struct sockaddr_in serv_addr;

    struct hostent *server;

    struct Test test_name;


    test_name.num = 10;


    
char buffer[256];
    
if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);

       exit(0);

    }

    portno = atoi(argv[2]);

    sockfd = socket(AF_INET, SOCK_STREAM, 0);

    
if (sockfd < 0) 
        error("ERROR opening socket");

    server = gethostbyname(argv[1]);

    
if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");

        exit(0);

    }

    bzero((
char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;

    bcopy((
char *)server->h_addr, 
         (
char *)&serv_addr.sin_addr.s_addr,
         server->h_length);

    serv_addr.sin_port = htons(portno);

    
if (connect(sockfd,(struct sockaddr_in *) &serv_addr,sizeof(serv_addr)) < 0) 
        error("ERROR connecting");

    printf("Please enter the message: ");

    bzero(buffer,256);

    fgets(test_name.name,255,stdin);


    n = write(sockfd,&test_name, 256);

    
if (n < 0) 
         error("ERROR writing to socket");

    bzero(buffer,256);

    n = read(sockfd,buffer,255);

    
if (n < 0) 
         error("ERROR reading from socket");

    printf("%s\n",buffer);

    return 0;

}


 
Privacy Policy | About Us