Anda di halaman 1dari 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
NETWORK PROGRAMMING LAB MANUAL

INFORMATION TECHNOLOGY Page 2
SREE CHAITANYA COLLEGE OF ENGINEERING

INDEX INDEX INDEX INDEX
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<stdio.h>
#include<unistd.h>
#include<stdlib.h>
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<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<errno.h>
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<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<string.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<string.h>
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<n-1;i++)
putc(rcv.data[i],fd);
}
fclose(fd);
break;
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
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<stdio.h> /*standard I/O routines */
#include<sys/types.h> /*various type definations */
#include<sys/shm.h> /*semaphor functions and structures */
#include<sys/sem.h> /*shared memory functions */
#include<sys/ipc.h> /*general sysV IPC structs*/
#include<unistd.h> /*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 <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
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 <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

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<strlen(s)/2;i++)
{
temp=s[i];
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
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<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
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<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
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 <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

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 <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

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 <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

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 <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
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 <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<strlen(str)/2;i++)
{
temp=str[i];
str[i]=str[len];
str[len--]=temp;
}

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 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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
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<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
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<stdio.h>
#include<sys/types.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<netdb.h>
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

Anda mungkin juga menyukai