In: Computer Science
Implement the following socket programming in C (b) Chat Application using TCP
TCP CLIENT
#include<sys/socket.h> #include<stdio.h> #include<string.h> #include<netdb.h> #include<stdlib.h> int main() { char buf[100]; int k; int sock_des; struct sockadder_in client; memset(&client,0,sizeof(client)); sock_des=socket(AF_INET,SOCK_STREAM,0); if(sock_des==-1) { printf("Error in socket creation"); exit(1); } client.sin_family=AF_INET; client.sin_adder.s_adder=INADDR_ANY; client.sin_port=3002; k=connect(sock_des,(struct sockadder*)&client,sizeof(client)); if(k==-1) { printf("Error in connecting to server"); exit(1); } while(1) { printf("\nEnter data to be send to server: "); fgets(buf,100,stdin); if(strncmp(buf,"end",3)==0) break; k=send(sock_des,buf,100,0); if(k==-1) { printf("Error in sending"); exit(1); } k=recv(sock_des,buf,100,0); if(k==-1) { printf("Error in receiving"); exit(1); } printf("Message got from server is : %s",buf); } close(sock_des);
TCP SERVER
#include<sys/socket.h> #include<stdio.h> #include<string.h> #include<netdb.h> #include<stdlib.h> int main() { char buf[100]; int k; socklen_t len; int sock_desc,temp_sock_desc; struct sockaddr_in server,client; memset(&server,0,sizeof(server)); memset(&client,0,sizeof(client)); sock_desc=socket(AF_INET,SOCK_STREAM,0); if(sock_desc==-1) { printf("Error in socket creation"); exit(1); } server.sin_family=AF_INET; server.sin_addr.s_addr=inet_addr("127.0.0.1"); server.sin_port=3002; k=bind(sock_desc,(struct sockaddr*)&server,sizeof(server)); if(k==-1) { printf("Error in binding"); exit(1); } k=listen(sock_desc,20); if(k==-1) { printf("Error in listening"); exit(1); } len=sizeof(client);//VERY IMPORTANT temp_sock_desc=accept(sock_desc,(struct sockaddr*)&client,&len); if(temp_sock_desc==-1) { printf("Error in temporary socket creation"); exit(1); } while(1) { k=recv(temp_sock_desc,buf,100,0); if(k==-1) { printf("Error in receiving"); exit(1); } printf("Message got from client is : %s",buf); printf("\nEnter data to be send to client: "); fgets(buf,100,stdin); if(strncmp(buf,"end",3)==0) break; k=send(temp_sock_desc,buf,100,0); if(k==-1) { printf("Error in sending"); exit(1); } } close(temp_sock_desc); exit(0); return 0; }