NetWork Programming

59
NETWORK PROGRAMMING LAB MANUAL INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING SREE CHAITANYA COLLEGE OF ENGINEERING KARIMNAGAR IV-I www.jntuworld.com www.jntuworld.com www.jwjobs.net

description

NetWork Programming

Transcript of NetWork Programming

  • NETWORK

    PROGRAMMING

    LAB MANUAL INFORMATION TECHNOLOGY

    DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING

    SREE CHAITANYA COLLEGE OF ENGINEERING

    KARIMNAGAR

    IV-I

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 2

    SREE CHAITANYA COLLEGE OF ENGINEERING

    INDEXINDEXINDEXINDEX

    Sno Name of the Program Page No

    1 Inter Process communication of PIPES and FIFO 4

    2 File transfer using message queue 8

    3 Semaphores with shared memories 12

    4 TCP Client & Server Reversing the given string 15

    5 TCP File Transfer using client & server 21

    6 TCP Client & Server Converting the given string to upper case 25

    7 TCP echo using client & Server application 29

    8 TCP chat server & client application 33

    9 UDP echo using client & Server 40

    10 UDP File Transfer using client & Server 44

    11 UDP Client & Server Reversing the given string 48

    12 UDP Client & Server Converting the given string to upper case 52

    13 UDP chat using client & Server 55

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 3

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.1. EXP.NAME:Program to demonstrate interprocess communication between parent

    process and child process.

    PROGRAM:

    #include

    #include

    #include

    int main(void)

    {

    int n;

    int fd[2];

    pid_t pid;

    char buf[10];

    pipe(fd);

    pid=fork();

    if(pid>0)

    {

    close(fd[0]);

    write(fd[1],welcome,8);

    }

    else

    {

    close(fd[1]);

    n=read(fd[0],buf,8);

    printf(Data read is %s,buf);

    }

    }

    OUTPUT:

    Data read is : welcome

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 4

    SREE CHAITANYA COLLEGE OF ENGINEERING

    EXP.NAME: Program to demonstrate creating and reading a fifo file.

    PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    main()

    {

    char s[88];

    int num,fd;

    mknod("/tmp/chtn",S_IFIFO | 0666,0);

    printf("waiting for writers.....\n");

    fd=open("/tmp/d",O_RDONLY);

    printf("Got a writer:\n");

    do

    {

    if((num=read(fd,s,8))==-1)

    perror("read error");

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 5

    SREE CHAITANYA COLLEGE OF ENGINEERING

    else

    {

    perror("read data");

    s[num]='\0';

    printf("Consumer:read %d bytes %s \n",num,s);

    }

    }while(num>0);

    }

    OUTPUT:

    Waiting for writers..

    Got a writer:

    Read data:success

    Consumer: read 5 bytes hello

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 6

    SREE CHAITANYA COLLEGE OF ENGINEERING

    WRITE PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    main()

    {

    char s[30];

    int num,fd;

    printf("waiting for readers.....\n");

    fd=open("/tmp/d",O_WRONLY);

    printf("Got a reader...Type some stuff\n");

    while( gets(s), !feof(stdin))

    {

    if((num=write(fd,s,strlen(s)))==-1)

    printf("error");

    else

    printf("speak: wrote %d\n",num);

    }

    }

    OUTPUT:

    waiting for readers..

    Got a readerType some stuff

    Hello

    Speak:wrote 5

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 7

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.2. EXP.NAME: Create a program which opens a file and also opens the message

    queue and tranfer the data from file to message queue, also pass the name of the file.

    SOURCE PROGRAM:

    #include

    #include

    #include

    #include

    #include

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

    {

    int key,id,i=0,qid;

    char ch,d[128];

    FILE *fs;

    fs=fopen("source.txt","r");

    if(fs==NULL)

    printf("File cannot open");

    struct msgbuf

    {

    long type;

    char data[128];

    }snd;

    key=atoi(argv[1]);

    snd.type=atoi(argv[2]);

    id=msgget(key,IPC_CREAT|0666);

    while(1)

    {

    ch=getc(fs);

    if(ch==EOF)

    {

    fclose(fs);

    goto next;

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 8

    SREE CHAITANYA COLLEGE OF ENGINEERING

    else

    {

    d[i++]=ch;

    }

    }

    next:d[i]='\0';

    printf("%s",d);

    strcpy(snd.data,d);

    msgsnd(id,&snd,strlen(snd.data),0);

    printf("\nsuccessfully sent");

    }

    OUTPUT:

    11 22

    (Source.txt)

    Welcome

    Success

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 9

    SREE CHAITANYA COLLEGE OF ENGINEERING

    DESTINATION PROGRAM:

    #include

    #include

    #include

    #include

    #include

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

    {

    int key,id,i=0,qid,n;

    char ch,d[128];

    FILE *fd;

    fd=fopen("destination.txt","w");

    if(fd==NULL)

    printf("File cannot open");

    struct msgbuf

    {

    long type;

    char data[128];

    }rcv;

    key=atoi(argv[1]);

    rcv.type=atoi(argv[2]);

    id=msgget(key,IPC_CREAT|0666);

    while(1)

    {

    if(msgrcv(id,&rcv,128,rcv.type,0))

    {

    printf("data received is '%s' ",rcv.data);

    n=strlen(rcv.data);

    for(i=0;i

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 10

    SREE CHAITANYA COLLEGE OF ENGINEERING

    }

    printf("\nsuccessfully entered into the file");

    }

    OUTPUT:

    11 22

    (destination.txt)

    Welcome

    Successfully entered into the file

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 11

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.3. EXP.NAME: Program to create an integer variable using shared memory concept

    and increment the variable simultaneously by two processes. Using semaphores to

    avoid race conditions.

    PROGRAM:

    #include /*standard I/O routines */

    #include /*various type definations */

    #include /*semaphor functions and structures */

    #include /*shared memory functions */

    #include /*general sysV IPC structs*/

    #include /*fork()*/

    void sem_lock(int);

    void sem_unlock(int);

    int main()

    {

    pid_t pid;

    int id,s,smid;

    void *ptr;

    int v=10;

    id=semget(22,128,IPC_CREAT|0600);

    smid=semget(250,1,IPC_CREAT|0666);

    pid=fork();

    if(pid>0)

    {

    ptr=shmat(id,(void *)0,0);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 12

    SREE CHAITANYA COLLEGE OF ENGINEERING

    printf("\nvalue of variable before increment in child is %d",v);

    sem_lock(smid);

    v=v+1;

    printf("\nvalue of variable after increment in child is %d",v);

    sem_unlock(smid);

    }

    else

    {

    ptr=shmat(id,(void *)0,0);

    printf("\nvalue of variable before increment in parent is %d",v);

    sem_lock(smid);

    v=v+1;

    printf("\nvalue of variable after increment in parent is %d",v);

    sem_unlock(smid);

    }

    }

    void sem_lock(int semid)

    {

    struct sembuf sem_op;

    sem_op.sem_num=0;

    sem_op.sem_op=-1;

    sem_op.sem_flg=0;

    semop(semid,&sem_op,1);

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 13

    SREE CHAITANYA COLLEGE OF ENGINEERING

    void sem_unlock(int semid)

    {

    struct sembuf sem_op;

    sem_op.sem_num=0;

    sem_op.sem_op=1;

    sem_op.sem_flg=0;

    semop(semid,&sem_op,1);

    }

    OUTPUT:

    nvalue of variable before increment in child is 10

    value of variable after increment in child is 11

    value of variable before increment in parent is 10

    value of variable after increment in parent is 11

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 14

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp. No.4. Exp.Name: Program to perform TCP iterative Client and server application to

    reverse the given input sentence.

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int sock, bytes_recieved;

    char send_data[1024],recv_data[1024],s[100];

    struct hostent *host;

    struct sockaddr_in server_addr;

    host = gethostbyname("127.0.0.1");

    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

    perror("Socket");

    exit(1);

    }

    server_addr.sin_family = AF_INET;

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 15

    SREE CHAITANYA COLLEGE OF ENGINEERING

    server_addr.sin_port = htons(5000);

    server_addr.sin_addr = *((struct in_addr *)host->h_addr);

    bzero(&(server_addr.sin_zero),8);

    if (connect(sock, (struct sockaddr *)&server_addr,

    sizeof(struct sockaddr)) == -1)

    {

    perror("Connect");

    exit(1);

    }

    printf("\nSEND (q or Q to quit) : ");

    gets(send_data);

    send(sock,send_data,strlen(send_data), 0);

    puts(send_data);

    bytes_recieved=recv(sock,recv_data,1024,0);

    recv_data[bytes_recieved] = '\0';

    printf("\nRecieved data = %s " , recv_data);

    return 0;

    }

    OUTPUT:

    SEND (q or Q to quit) :hello

    Recieved data = olleh

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 16

    SREE CHAITANYA COLLEGE OF ENGINEERING

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    char rev(char *);

    int main()

    {

    int sock, connected, bytes_recieved , true = 1;

    char send_data [1024] , recv_data[1024];

    char s[100];

    struct sockaddr_in server_addr,client_addr;

    int sin_size;

    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

    perror("Socket");

    exit(1);

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 17

    SREE CHAITANYA COLLEGE OF ENGINEERING

    if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) == -1) {

    perror("Setsockopt");

    exit(1);

    }

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons(5000);

    server_addr.sin_addr.s_addr = INADDR_ANY;

    bzero(&(server_addr.sin_zero),8);

    if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))

    == -1) {

    perror("Unable to bind");

    exit(1);

    }

    if (listen(sock, 5) == -1) {

    perror("Listen");

    exit(1);

    }

    sin_size = sizeof(struct sockaddr_in);

    connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 18

    SREE CHAITANYA COLLEGE OF ENGINEERING

    printf("\n I got a connection from (%s , %d)",

    inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));

    bytes_recieved = recv(connected,recv_data,1024,0);

    recv_data[bytes_recieved] = '\0';

    puts(recv_data);

    rev(recv_data);

    send(connected,recv_data,strlen(recv_data),0);

    puts(recv_data);

    close(sock);

    return 0;

    }

    char rev(char *s)

    {

    char temp;

    int len,i;

    len=strlen(s)-1;

    for(i=0;i

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 19

    SREE CHAITANYA COLLEGE OF ENGINEERING

    s[i]=s[len];

    s[len--]=temp;

    }

    return s;

    }

    OUTPUT: I got a connection from(127.0.0.1,5000)

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 20

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.5. EXP.NAME: Program to perform TCP file transfer using client and server.

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int clnt_fd;

    FILE *fd;

    struct sockaddr_in serv_addr;

    char c;

    clnt_fd=socket(AF_INET,SOCK_STREAM,0);

    serv_addr.sin_family=AF_INET;

    serv_addr.sin_port=htons(atoi(argv[2]));

    serv_addr.sin_addr.s_addr=inet_addr(argv[1]);

    connect(clnt_fd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));

    fd=fopen("dest.txt","w");

    printf("Data receiving from server...\n");

    printf("\nData written to file 'dest.txt' file is...");

    while(read(clnt_fd,&c,1))

    {

    putc(c,fd);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 21

    SREE CHAITANYA COLLEGE OF ENGINEERING

    printf("%c",c);

    }

    fclose(fd);

    close(clnt_fd);

    return 0;

    }

    OUTPUT:

    Data receiving from server...

    Data written to file 'dest.txt' file iswelcome

    ( Dest.txt file contains welcome)

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 22

    SREE CHAITANYA COLLEGE OF ENGINEERING

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int serv_fd,clnt_fd;

    FILE *fs;

    struct sockaddr_in serv_addr;

    char c;

    serv_fd=socket(AF_INET,SOCK_STREAM,0);

    serv_addr.sin_family=AF_INET;

    serv_addr.sin_port=htons(atoi(argv[1]));

    serv_addr.sin_addr.s_addr=INADDR_ANY;

    bind(serv_fd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));

    listen(serv_fd,1);

    clnt_fd=accept(serv_fd,NULL,NULL);

    fs=fopen("source.txt","r");

    printf("Data reading from file 'source.txt'....\n");

    printf("\nData sent to client from file is... ");

    while((c=getc(fs))!=EOF)

    {

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 23

    SREE CHAITANYA COLLEGE OF ENGINEERING

    printf("%c",c);

    write(clnt_fd,&c,1);

    fclose(fs);

    close(clnt_fd);

    close(serv_fd);

    return 0;

    }

    OUTPUT:

    (If source.txt file contains data welcome)

    Data reading from file 'source.txt'....

    Data sent to client from file is... welcome

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 24

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.6. EXP.NAME: Program to perform TCP client and server application to convert

    lower case string to upper case string.

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc, char **argv)

    {

    int clnt_fd;

    struct sockaddr_in serv_addr;

    char c;

    // create socket

    clnt_fd = socket(AF_INET, SOCK_STREAM, 0);

    // prepare for connect

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(atoi(argv[2]));

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 25

    SREE CHAITANYA COLLEGE OF ENGINEERING

    serv_addr.sin_addr.s_addr = inet_addr(argv[1]);

    // connect to echo server

    connect(clnt_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

    // write to echo server

    while ((c = (char) getchar()) != EOF) { // read from keyboard

    write(clnt_fd, &c, 1); // write to echo server

    read(clnt_fd, &c, 1); // read from echo server

    putchar((int) c); // write to monitor

    }

    close(clnt_fd);

    return 0;

    }

    OUTPUT: 127.0.0.1 5000

    hello

    HELLO

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 26

    SREE CHAITANYA COLLEGE OF ENGINEERING

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc, char **argv)

    {

    int serv_fd, clnt_fd;

    struct sockaddr_in serv_addr;

    char c,d;

    serv_fd = socket(AF_INET, SOCK_STREAM, 0);

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(atoi(argv[1]));

    serv_addr.sin_addr.s_addr = INADDR_ANY;

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 27

    SREE CHAITANYA COLLEGE OF ENGINEERING

    bind(serv_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

    listen(serv_fd, 1);

    clnt_fd = accept(serv_fd, NULL, NULL);

    while (read(clnt_fd, &c, 1))

    {

    d=toupper(c);

    write(clnt_fd, &d, 1);

    }

    close(clnt_fd);

    close(serv_fd);

    return 0;

    }

    OUTPUT:

    5000

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 28

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.7. EXP.NAME: Program to perform TCP echo client and server application.

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc, char **argv)

    {

    int serv_fd, clnt_fd;

    struct sockaddr_in serv_addr;

    char c;

    // create socket

    serv_fd = socket(AF_INET, SOCK_STREAM, 0);

    // prepare for bind

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(atoi(argv[1]));

    serv_addr.sin_addr.s_addr = INADDR_ANY;

    // bind

    bind(serv_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

    // listen only 1 queue

    listen(serv_fd, 1);

    // accept only 1 client

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 29

    SREE CHAITANYA COLLEGE OF ENGINEERING

    clnt_fd = accept(serv_fd, NULL, NULL);

    // read and write until ^D (from client)

    while (read(clnt_fd, &c, 1)) { // read from client

    write(clnt_fd, &c, 1); // write to client

    }

    // close connection from client and stop echo server

    close(clnt_fd);

    close(serv_fd);

    return 0;

    }

    OUTPUT:

    5000

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 30

    SREE CHAITANYA COLLEGE OF ENGINEERING

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

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

    int clnt_fd;

    struct sockaddr_in serv_addr;

    char c;

    // create socket

    clnt_fd = socket(AF_INET, SOCK_STREAM, 0);

    // prepare for connect

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(atoi(argv[2]));

    serv_addr.sin_addr.s_addr = inet_addr(argv[1]);

    // connect to echo server

    connect(clnt_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

    // write to echo server

    while ((c = (char) getchar()) != EOF) { // read from keyboard

    write(clnt_fd, &c, 1); // write to echo server

    read(clnt_fd, &c, 1); // read from echo server

    putchar((int) c); // write to monitor

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 31

    SREE CHAITANYA COLLEGE OF ENGINEERING

    close(clnt_fd);

    return 0;

    }

    OUTPUT:

    127.0.0.1 5000

    Welcome

    Welcome

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 32

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.8. EXP.NAME: Program to perform TCP chat client and server application.

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int sock, connected, bytes_recieved , true = 1;

    char send_data [1024] , recv_data[1024];

    struct sockaddr_in server_addr,client_addr;

    int sin_size;

    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

    perror("Socket");

    exit(1);

    }

    if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) == -1) {

    perror("Setsockopt");

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 33

    SREE CHAITANYA COLLEGE OF ENGINEERING

    exit(1);

    }

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons(5000);

    server_addr.sin_addr.s_addr = INADDR_ANY;

    bzero(&(server_addr.sin_zero),8);

    if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))

    == -1) {

    perror("Unable to bind");

    exit(1);

    }

    if (listen(sock, 5) == -1) {

    perror("Listen");

    exit(1);

    }

    printf("\nTCPServer Waiting for client on port 5000");

    fflush(stdout);

    while(1)

    {

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 34

    SREE CHAITANYA COLLEGE OF ENGINEERING

    sin_size = sizeof(struct sockaddr_in);

    connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);

    printf("\n I got a connection from (%s , %d)",

    inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));

    while (1)

    {

    printf("\n SEND (q or Q to quit) : ");

    gets(send_data);

    if (strcmp(send_data , "q") == 0 || strcmp(send_data , "Q") == 0)

    {

    send(connected, send_data,strlen(send_data), 0);

    close(connected);

    break;

    }

    else

    send(connected, send_data,strlen(send_data), 0);

    bytes_recieved = recv(connected,recv_data,1024,0);

    recv_data[bytes_recieved] = '\0';

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 35

    SREE CHAITANYA COLLEGE OF ENGINEERING

    if (strcmp(recv_data , "q") == 0 || strcmp(recv_data , "Q") == 0)

    {

    close(connected);

    break;

    }

    else

    printf("\n RECIEVED DATA = %s " , recv_data);

    fflush(stdout);

    }

    }

    close(sock);

    return 0;

    }

    OUTPUT:

    TCPServer Waiting for client on port 5000

    I got a connection from (127.0.0.1,3455)

    SEND (q or Q to quit) :hai

    RECIEVED DATA = hello

    SEND (q or Q to quit) :Q

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 36

    SREE CHAITANYA COLLEGE OF ENGINEERING

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int sock, bytes_recieved;

    char send_data[1024],recv_data[1024];

    struct hostent *host;

    struct sockaddr_in server_addr;

    host = gethostbyname("127.0.0.1");

    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

    perror("Socket");

    exit(1);

    }

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons(5000);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 37

    SREE CHAITANYA COLLEGE OF ENGINEERING

    server_addr.sin_addr = *((struct in_addr *)host->h_addr);

    bzero(&(server_addr.sin_zero),8);

    if (connect(sock, (struct sockaddr *)&server_addr,

    sizeof(struct sockaddr)) == -1)

    {

    perror("Connect");

    exit(1);

    }

    while(1)

    {

    bytes_recieved=recv(sock,recv_data,1024,0);

    recv_data[bytes_recieved] = '\0';

    if (strcmp(recv_data , "q") == 0 || strcmp(recv_data , "Q") == 0)

    {

    close(sock);

    break;

    }

    else

    printf("\nRecieved data = %s " , recv_data);

    printf("\nSEND (q or Q to quit) : ");

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 38

    SREE CHAITANYA COLLEGE OF ENGINEERING

    gets(send_data);

    if (strcmp(send_data , "q") != 0 && strcmp(send_data , "Q") != 0)

    send(sock,send_data,strlen(send_data), 0);

    else

    {

    send(sock,send_data,strlen(send_data), 0);

    close(sock);

    break;

    }

    }

    return 0;

    }

    OUTPUT:

    Recieved data =hai

    SEND (q or Q to quit) :hello

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 39

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.9 Exp.Name: Program to perform reverse of a given string by using UDP client server

    applcation.

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int len,listenfd,r;

    char buff[1024],str[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t servlen;

    listenfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(5000);

    printf("\n Send Data:");

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 40

    SREE CHAITANYA COLLEGE OF ENGINEERING

    scanf("%s",buff);

    sendto(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,sizeof(servaddr));

    r=recvfrom(listenfd,str,sizeof(str),0,(struct sockaddr*)&servaddr, &servlen);

    str[r]=0;

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

    exit(0);

    return 0;

    }

    OUTPUT:

    Send Data: hello

    olleh

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 41

    SREE CHAITANYA COLLEGE OF ENGINEERING

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int len,sfd,connfd,i=0,r,b;

    char buff[1024],str[1024],temp;

    struct sockaddr_in servaddr,cliaddr;

    socklen_t clilen;

    sfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(5000);

    b=bind(sfd,(struct sockaddr*)&servaddr, sizeof(servaddr));

    clilen=sizeof(cliaddr);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 42

    SREE CHAITANYA COLLEGE OF ENGINEERING

    r=recvfrom(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr, &clilen);

    buff[r]=0;

    strcpy(str,buff);

    len=strlen(str)-1;

    for(i=0;i

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 43

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.10. Exp.Name:Program to design UDP client and server to transfer a file.

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int len,listenfd,r,i;

    char c,buff[1024],s[30];

    struct sockaddr_in servaddr,cliaddr;

    FILE *fd;

    socklen_t servlen;

    listenfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(atoi(argv[1]));

    printf("\nEnter ready to start....");

    gets(s);

    sendto(listenfd,s,sizeof(s),0,(struct sockaddr *)&servaddr,sizeof(servaddr));

    printf("\nUDP client is waiting for data to be received from server...");

    r=recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr, &servlen);

    printf("\ndata received is %s",buff);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 44

    SREE CHAITANYA COLLEGE OF ENGINEERING

    fd=fopen("dest.txt","w");

    printf("\ndata received is writing to file 'dest.txt'...\n");

    buff[r]='\0';

    fprintf(fd,"%s",buff);

    printf("\ndata wrote to file is %s",buff);

    return 0;

    }

    OUTPUT: Enter ready to start....

    UDP client is waiting for data to be received from server

    data received iswelcome

    data received is writing to file 'dest.txt'...

    data written to file iswelcome

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 45

    SREE CHAITANYA COLLEGE OF ENGINEERING

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int len,sfd,connfd,i=0,r,b;

    char c,buff[1024],d[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t clilen;

    FILE *fs;

    sfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(atoi(argv[1]));

    b=bind(sfd,(struct sockaddr*)&servaddr, sizeof(servaddr));

    clilen=sizeof(cliaddr);

    r=recvfrom(sfd,buff,sizeof(buff),0,(struct sockaddr *)&cliaddr,&clilen);

    fs=fopen("source.txt","r");

    printf("\ndata is reading from 'source.txt'...");

    while((c=getc(fs))!=EOF)

    {

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 46

    SREE CHAITANYA COLLEGE OF ENGINEERING

    d[i++]=c;

    }

    d[i]='\0';

    sendto(sfd,d,sizeof(d),0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));

    printf("\ndata sent to client is %s",d);

    return 0;

    }

    OUTPUT:

    ( If source.txt file contains data welcome)

    data is reading from 'source.txt'...

    data sent to client iswelcome

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 47

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp. No.11. Exp.Name: Program to perform UDP client and server application to convert

    lower string to upper string.

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int len,sfd,connfd,i=0,r,b,j=0;

    char buff[1024],str[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t clilen;

    sfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(atoi(argv[1]));

    b=bind(sfd,(struct sockaddr*)&servaddr, sizeof(servaddr));

    clilen=sizeof(cliaddr);

    r=recvfrom(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr, &clilen);

    buff[r]='\0';

    while(buff[j]!='\0')

    {

    str[i++]=toupper(buff[j++]);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 48

    SREE CHAITANYA COLLEGE OF ENGINEERING

    }

    str[i]='\0';

    sendto(sfd,str,sizeof(str),0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));

    exit(0);

    return 0;

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 49

    SREE CHAITANYA COLLEGE OF ENGINEERING

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc,char **argv)

    {

    int len,listenfd,r;

    char buff[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t servlen;

    listenfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(atoi(argv[1]));

    printf("\n Send Data:");

    scanf("%s",buff);

    sendto(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,sizeof(servaddr));

    r=recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr, &servlen);

    buff[r]=0;

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

    exit(0);

    return 0;

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 50

    SREE CHAITANYA COLLEGE OF ENGINEERING

    }

    OUTPUT:

    send Data:

    hello

    HELLO

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 51

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp. No.12. Exp.Name: Program to perform UDP echo client and server application.

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int len,sfd,connfd,i=0,r,b;

    char buff[1024],str[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t clilen;

    sfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(5000);

    b=bind(sfd,(struct sockaddr*)&servaddr, sizeof(servaddr));

    clilen=sizeof(cliaddr);

    r=recvfrom(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr, &clilen);

    buff[r]=0;

    sendto(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 52

    SREE CHAITANYA COLLEGE OF ENGINEERING

    exit(0);

    return 0;

    }

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int len,listenfd,r;

    char buff[1024];

    struct sockaddr_in servaddr,cliaddr;

    socklen_t servlen;

    listenfd=socket(AF_INET,SOCK_DGRAM,0);

    memset(servaddr.sin_zero,'\0',sizeof(servaddr.sin_zero));

    servaddr.sin_family=AF_INET;

    servaddr.sin_addr.s_addr=INADDR_ANY;

    servaddr.sin_port=htons(5000);

    printf("\n Send Data:");

    scanf("%s",buff);

    sendto(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,sizeof(servaddr));

    r=recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr, &servlen);

    buff[r]=0;

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

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 53

    SREE CHAITANYA COLLEGE OF ENGINEERING

    exit(0);

    return 0;

    }

    OUTPUT:

    Send Data:hai

    Hai

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 54

    SREE CHAITANYA COLLEGE OF ENGINEERING

    Exp.No.13. Exp.Name: Program to perform UDP server and client chat application.

    SERVER PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int sock;

    int addr_len,bytes_read;

    char recv_data[1024],send_data[1024];

    struct sockaddr_in server_addr,client_addr;

    if((sock=socket(AF_INET,SOCK_DGRAM,0))==-1)

    {

    perror("socket");

    exit(1);

    }

    server_addr.sin_family=AF_INET;

    server_addr.sin_port=htons(5000);

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 55

    SREE CHAITANYA COLLEGE OF ENGINEERING

    server_addr.sin_addr.s_addr=INADDR_ANY;

    bzero(&(server_addr.sin_zero),8);

    if(bind(sock,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)

    {

    perror("bind");

    exit(1);

    }

    addr_len=sizeof(struct sockaddr);

    printf("\n UDP server waiting for client on port 5000");

    fflush(stdout);

    while(1)

    {

    bytes_read=recvfrom(sock,recv_data,1024,0,(struct sockaddr *)&client_addr,&addr_len);

    recv_data[bytes_read]='\0';

    printf("\n(%s,%d)said:",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));

    printf("%s",recv_data);

    printf("\nType something(q to quit):");

    gets(send_data);

    if((strcmp(send_data,"q")==0))

    break;

    else

    {

    sendto(sock,send_data,strlen(send_data),0,(struct sockaddr *)&client_addr,sizeof(struct

    sockaddr));

    fflush(stdout);

    }

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 56

    SREE CHAITANYA COLLEGE OF ENGINEERING

    return 0;

    }

    OUTPUT:

    UDP server waiting for client on port 5000

    (127.0.0.1,3445)said:hai

    Type something(q or Q to quit):hello

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 57

    SREE CHAITANYA COLLEGE OF ENGINEERING

    CLIENT PROGRAM:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    int main()

    {

    int sock;

    int addr_len,bytes_read;

    struct sockaddr_in server_addr,client_addr;

    struct hostent *host;

    char send_data[1024],recv_data[1024];

    host=(struct hostent *)gethostbyname((char *)"127.0.0.1");

    if((sock=socket(AF_INET,SOCK_DGRAM,0))==-1)

    {

    perror("socket");

    exit(1);

    }

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 58

    SREE CHAITANYA COLLEGE OF ENGINEERING

    server_addr.sin_family=AF_INET;

    server_addr.sin_port=htons(5000);

    server_addr.sin_addr=*((struct in_addr *)host->h_addr);

    bzero(&(server_addr.sin_zero),8);

    while(1)

    {

    printf("\ntype something(q or Q to quit):");

    gets(send_data);

    if((strcmp(send_data,"q")==0||strcmp(send_data,"Q")==0))

    break;

    else

    {

    sendto(sock,send_data,strlen(send_data),0,(struct sockaddr

    *)&server_addr,sizeof(struct sockaddr));

    }

    addr_len=sizeof(struct sockaddr);

    bytes_read=recvfrom(sock,recv_data,1024,0,(struct sockaddr

    *)&server_addr,&addr_len);

    recv_data[bytes_read]='\0';

    printf("\n(%s,%d)said:",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));

    printf("%s",recv_data);

    fflush(stdout);

    }

    return 0;

    }

    OUTPUT:

    type something(q or Q to quit):hai

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net

  • NETWORK PROGRAMMING LAB MANUAL

    INFORMATION TECHNOLOGY Page 59

    SREE CHAITANYA COLLEGE OF ENGINEERING

    (127.0.0.1,3225)said:hello

    type something(q or Q to quit):q

    www.jntuworld.com

    www.jntuworld.com

    www.jwjobs.net