Write a program using socket programming for TCP preferably in C.
//TCP Client
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
int
cont,create_socket,ch=1,j;
int
bufsize = 1024;
char
rd1[10];
char
*buffer= malloc(bufsize);
char
fname[256];
struct sockaddr_in address;
if
((create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0)
printf("The Socket was
created\n");
address.sin_family = AF_INET;
address.sin_port = htons(10000);
inet_pton(AF_INET,argv[1],&address.sin_addr);
if (connect(create_socket,(struct
sockaddr *)
&address,sizeof(address)) == 0)
printf("The
connection was accepted with the server %s...\n",argv[1]);
else
printf("connect
not succeded\n");
while(ch==1)
{
//scanf("%s",&rd);
gets(rd1);
cont=strlen(rd1);
send(create_socket,rd1,cont,0);
if(strcmp(rd1,"exit")==0)
{
ch=0;
break;
}
for(j=0;j<10;j++)
{
rd1[j]=NULL;
}
//strcpy(rd,"\0");
recv(create_socket,rd1,10,0);
printf("\n",rd1);
puts(rd1);
if(strcmp(rd1,"exit")==0)
{
ch=0;
break;
}
}
return
close(create_socket);
}
// Output
student@mmcoe-desktop:~$
gcc ccli.c -o c1
student@mmcoe-desktop:~$ ./c1 172.16.1.138
The Socket was created
The connection was accepted with the server
172.16.1.138...
hi xyz
hello
how r u?
fine
bye
//TCP server
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/stat.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
int main()
{
int
cont,create_socket,new_socket,addrlen,fd;
int bufsize =
1024,z,ch=1,j;
char *buffer
= malloc(bufsize);
char rd[10];
char
error[15]="FILE NOT FOUND";
char
fname[256];
struct
sockaddr_in address;
if
((create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0) /*opens
a network socket and returns a channel identifier that may be used in future invocation of
commands like read, puts and flush. At present only the TCP network protocol is
supported; future releases may include
support for additional protocols. The
socket com‐ mand may be used to open
either the client or server side of a connection,
depending on
whether the -server switch is specified.*/
printf("The socket was created\n");
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(10000);
if (bind(create_socket,(struct sockaddr
*)&address,sizeof(address)) == 0)
printf("Binding Socket\n");
listen(create_socket,3);
printf("server listening\n");
addrlen = sizeof(struct sockaddr_in);
new_socket = accept(create_socket,(struct sockaddr
*)&address,&addrlen);
printf("The Client %s is
Connected...\n",inet_ntoa(address.sin_addr));
if (new_socket > 0)
{
while(ch==1)
{
//strcpy(rd,"\0");
for(j=0;j<10;j++)
{
rd[j]=NULL;
}
recv(new_socket,rd,10,0);
printf("\n",rd);
puts(rd);
if(strcmp(rd,"exit")==0)
{
ch=0;
break;
}
//scanf("%s",&rd);
gets(rd);
cont=strlen(rd);
send(new_socket,rd,cont,0);
if(strcmp(rd,"exit")==0)
{
ch=0;
break;
}
}
}
printf("Request Completed\n");
close(new_socket);
return close(create_socket);
}
// output
student@mmcoe-desktop:~$ gcc cser.c -o s1
student@mmcoe-desktop:~$ ./s1
The socket was created
Binding Socket
server listening
The Client 172.16.1.138 is Connected...
hi xyz
hello
how r u?
fine
bye
0 comments:
Post a Comment