Skip to main content

TCP SOCKETS CHAT APPLICATION(SERVER & CLIENT) USING C

SERVER
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<string.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,MAX);
read(sockfd,buff,sizeof(buff));
printf("From client: %s\t To client : ",buff);
bzero(buff,MAX);
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
if(strncmp("exit",buff,4)==0)
{
printf("Server Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd,len;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(sockfd,(SA*)&servaddr, sizeof(servaddr)))!=0)
{
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
if((listen(sockfd,5))!=0)
{
printf("Listen failed...\n");
exit(0);
}
else
printf("Server listening..\n");
len=sizeof(cli);
connfd=accept(sockfd,(SA *)&cli,&len);
if(connfd<0)
{
printf("server acccept failed...\n");
exit(0);
}
else
printf("server acccept the client...\n");
func(connfd);
close(sockfd);
}

CLIENT
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,sizeof(buff));
printf("Enter the string : ");
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
bzero(buff,sizeof(buff));
read(sockfd,buff,sizeof(buff));
printf("From Server : %s",buff);
if((strncmp(buff,"exit",4))==0)
{
printf("Client Exit...\n");
break;
}
}
}

int main()
{
int sockfd,connfd;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(PORT);
if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))!=0)
{
printf("connection with the server failed...\n");
exit(0);
}
else
printf("connected to the server..\n");
func(sockfd);
close(sockfd);
}


OUTPUT
SERVER SIDE
$ cc tcpchatserver.c
$ ./a.out
Socket successfully created..
Socket successfully binded..
Server listening..
server acccept the client...
From client: hai
To client : hello
From client: exit
To client : exit
Server Exit...
$

CLIENT SIDE
$ cc tcpchatclient.c
$ ./a.out
Socket successfully created..
connected to the server..
Enter the string : hai
From Server : hello
Enter the string : exit
From Server : exit
Client Exit...

Comments

Popular posts from this blog

Understanding the dm-multipath Configuration file /etc/multipath.conf #centos7

Understanding the dm-multipath Configuration file /etc/multipath.conf The main configuration file for DM-Multipath is  /etc/multipath.conf . This file is not created by the initial installation of the RPM package. However, the following file is installed in the  /usr/share/doc/device-mapper-multipath-[version]  directory: multipath.conf  – Basic configuration file with some examples for DM-Multipath. This file is used to create the /etc/multipath.conf file. Sample /etc/multipath.conf file The multipath.conf file contains the following sections, and each section contains one or more attributes or subsections. Section Description defaults Defines the default settings for DM-Multipath. These settings can be overwritten by the devices and multipaths sections. blacklist Defines the devices to be excluded from the multipath topology discovery. Devices that are blacklisted are not grouped into a multipath device. blacklist_exceptions Defines the devices to ...

upload file type rocket chat #Accepted file upload. Can not send .xlsx

Enabling File format for upload at ROCKET CHAT application/msword   - for .doc application/vnd.openxmlformats-officedocument.wordprocessingml.document   - for .docx application/vnd.ms-excel   - for xls application/vnd.openxmlformats-officedocument.spreadsheetml.sheet   - for .xlsx application/vnd.ms-powerpoint   - for .ppt application/vnd.openxmlformats-officedocument.presentationml.presentation   - for .pptx image/*,audio/*,video/*,application/zip,application/x-rar-compressed,application/pdf,text/plain,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Troubleshooting DRBD #Centos #DRBD

Troubleshooting DRBD  This article presents common DRBD problems and solutions. DRBD (Distributed Replicated Block Device) runs on the master and slave nodes only, and is responsible for mirroring the contents of a partition between master and slave.  Typical problems in DRBD include: A lack of Primary-Secondary connectivity The Secondary operating in standalone mode Both nodes reporting connectivity but neither one in the role of master Both nodes reporting themselves in the role of master Verify the DRBD status The following command is used to verify that DRBD is operating normally on the master and slave nodes. drbd-overview When run on the master node, the output should look like the following: 1:r0/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt/drbd  ... When run on the slave node, the output should look like the following: 1:r0/0 Connected Secondary/Primary UpToDate/UpToDate C r----- The following sections are exampl...