zeus
3 years ago
8 changed files with 174 additions and 0 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,71 @@ |
|||
#include <stdio.h> |
|||
#include <netdb.h> |
|||
#include <netinet/in.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <unistd.h> |
|||
#include <sys/socket.h> |
|||
#include <sys/types.h> |
|||
#include <arpa/inet.h> |
|||
|
|||
|
|||
|
|||
#define MAX 80 |
|||
#define PORT 3033 |
|||
#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; |
|||
|
|||
// socket create and varification
|
|||
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)); |
|||
|
|||
// assign IP, PORT
|
|||
servaddr.sin_family = AF_INET; |
|||
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); |
|||
servaddr.sin_port = htons(PORT); |
|||
|
|||
// connect the client socket to server socket
|
|||
if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) { |
|||
printf("connection with the server failed...\n"); |
|||
exit(0); |
|||
} |
|||
else |
|||
printf("connected to the server..\n"); |
|||
|
|||
// function for chat
|
|||
func(sockfd); |
|||
|
|||
// close the socket
|
|||
close(sockfd); |
|||
} |
|||
|
@ -0,0 +1,2 @@ |
|||
|
|||
gcc -pthread ./client.c -o client ; |
@ -0,0 +1,2 @@ |
|||
|
|||
gcc -pthread ./server.c -o server ; |
Binary file not shown.
@ -0,0 +1,99 @@ |
|||
#include <stdio.h> |
|||
#include <netdb.h> |
|||
#include <netinet/in.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <unistd.h> |
|||
#include <sys/socket.h> |
|||
#include <sys/types.h> |
|||
|
|||
|
|||
|
|||
#define MAX 80 |
|||
#define PORT 3033 |
|||
#define SA struct sockaddr |
|||
|
|||
// Function designed for chat between client and server.
|
|||
void func(int sockfd) |
|||
{ |
|||
char buff[MAX]; |
|||
int n; |
|||
// infinite loop for chat
|
|||
for (;;) { |
|||
bzero(buff, MAX); |
|||
|
|||
// read the message from client and copy it in buffer
|
|||
read(sockfd, buff, sizeof(buff)); |
|||
// print buffer which contains the client contents
|
|||
printf("From client: %s\t To client : ", buff); |
|||
bzero(buff, MAX); |
|||
n = 0; |
|||
// copy server message in the buffer
|
|||
while ((buff[n++] = getchar()) != '\n') |
|||
; |
|||
|
|||
// and send that buffer to client
|
|||
write(sockfd, buff, sizeof(buff)); |
|||
|
|||
// if msg contains "Exit" then server exit and chat ended.
|
|||
if (strncmp("exit", buff, 4) == 0) { |
|||
printf("Server Exit...\n"); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Driver function
|
|||
int main() |
|||
{ |
|||
int sockfd, connfd, len; |
|||
struct sockaddr_in servaddr, cli; |
|||
|
|||
// socket create and verification
|
|||
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)); |
|||
|
|||
// assign IP, PORT
|
|||
servaddr.sin_family = AF_INET; |
|||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); |
|||
servaddr.sin_port = htons(PORT); |
|||
|
|||
// Binding newly created socket to given IP and verification
|
|||
if ((bind(sockfd, (SA*)&servaddr, sizeof(servaddr))) != 0) { |
|||
printf("socket bind failed...\n"); |
|||
exit(0); |
|||
} |
|||
else |
|||
printf("Socket successfully binded..\n"); |
|||
|
|||
// Now server is ready to listen and verification
|
|||
if ((listen(sockfd, 5)) != 0) { |
|||
printf("Listen failed...\n"); |
|||
exit(0); |
|||
} |
|||
else |
|||
printf("Server listening..\n"); |
|||
len = sizeof(cli); |
|||
|
|||
// Accept the data packet from client and verification
|
|||
connfd = accept(sockfd, (SA*)&cli, &len); |
|||
if (connfd < 0) { |
|||
printf("server acccept failed...\n"); |
|||
exit(0); |
|||
} |
|||
else |
|||
printf("server acccept the client...\n"); |
|||
|
|||
// Function for chatting between client and server
|
|||
func(connfd); |
|||
|
|||
// After chatting close the socket
|
|||
close(sockfd); |
|||
} |
|||
|
Binary file not shown.
Loading…
Reference in new issue