0% found this document useful (0 votes)
5 views4 pages

Stop N Wait

Uploaded by

sathul257
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views4 pages

Stop N Wait

Uploaded by

sathul257
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <stdio.

h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include<unistd.h>
int main()
{
int socket_desc, client_sock, client_size,frame;
struct sockaddr_in server_addr, client_addr;
char server_message[2000], client_message[2000];
// Clean buffers:
memset(server_message, '\0', sizeof(server_message));
memset(client_message, '\0', sizeof(client_message));
// Create socket:
socket_desc = socket(AF_INET, SOCK_STREAM, 0);
if(socket_desc < 0){
printf("Error while creating socket\n");
return -1;
}
printf("Socket created successfully\n");
// Set port and IP:
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
// Bind to the set port and IP:
if(bind(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr))<0){
printf("Couldn't bind to the port\n");
return -1;
}
printf("Done with binding\n");
// Listen for clients:
if(listen(socket_desc, 1) < 0){
printf("Error while listening\n");
return -1;
}
printf("\nListening for incoming connections.....\n");
// Accept an incoming connection:
client_size = sizeof(client_addr);
client_sock = accept(socket_desc, (struct sockaddr*)&client_addr, &client_size);

if (client_sock < 0){


printf("Can't accept\n");
return -1;
}
printf("Client connected at IP: %s and port: %i\n", inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));
while(1){
// Receive client's message:
if (recv(client_sock, client_message, sizeof(client_message), 0) <0){
printf("Couldn't receive\n");
return -1;
}
printf("Msg from client: %s\n", client_message);
// Respond to client:
memset(server_message, '\0', sizeof(server_message));
memset(client_message, '\0', sizeof(client_message));
printf("\nServer Acknowledges or not:? Ack-Y or y, NACK- N or n");
z:
memset(server_message, '\0', sizeof(server_message));
scanf("%s",server_message);
//strcpy(server_message, "received");
if (send(client_sock, server_message, strlen(server_message), 0) < 0){
printf("Can't send\n");
return -1;
}
if(strcmp(server_message,"N")==0 || strcmp(server_message,"n")==0){
printf("Acknowledgement not received by client");
goto z;
}

}
// Closing the socket:
close(client_sock);
close(socket_desc);

return 0;
}

client
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include<unistd.h>

int main(void)
{
int socket_desc;
int timer,frame;
struct sockaddr_in server_addr;
char server_message[2000], client_message[2000];
// Clean buffers:
memset(server_message,'\0',sizeof(server_message));
memset(client_message,'\0',sizeof(client_message));
// Create socket:
socket_desc = socket(AF_INET, SOCK_STREAM, 0);
if(socket_desc < 0){
printf("Unable to create socket\n");
return -1;
}
printf("Socket created successfully\n");
// Set port and IP the same as server-side:
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
// Send connection request to server:
if(connect(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0){
printf("Unable to connect\n");
return -1;
}
printf("Connected with server successfully\n");
printf("Enter the total frames: ");
scanf("%d",&frame);
while(frame>0){
// Get input from the user:
memset(server_message,'\0',sizeof(server_message));
memset(client_message,'\0',sizeof(client_message));
printf("\nEnter frame message: ");
scanf("%s",client_message);
// Send the message to server:
x:
timer = 10;
if(send(socket_desc, client_message, strlen(client_message), 0) < 0){
printf("Unable to send message\n");
return -1;
}
// Receive the server's response:
y:
if(timer>0){

if(recv(socket_desc, server_message, sizeof(server_message), 0) < 0){


printf("Error while receiving server's msg\n");
timer--;
goto y;
}
if(strcmp(server_message,"N")==0 || strcmp(server_message,"n")==0){
printf("\nWaiting...");
timer--;
goto y;
}
if(strcmp(server_message,"Y")==0 || strcmp(server_message,"y")==0){
printf("\nServer acknowledged");
timer =0;
frame--;
}// Close the socket:
}
else{
printf("\nServer donot acknowledged\nResending....");

goto x;
}
}
close(socket_desc);

return 0;
}

OUTPUT
buntu@ubuntu-H81M-S:~$ gcc slse.c
ubuntu@ubuntu-H81M-S:~$ gcc slse.c -o Server
ubuntu@ubuntu-H81M-S:~$ ./Server
Socket created successfully
Done with binding

Listening for incoming connections.....


Client connected at IP: 127.0.0.1 and port: 44584
Msg from client: i

Server Acknowledges or not:? Ack-Y or y, NACK- N or ny


Msg from client: A

Server Acknowledges or not:? Ack-Y or y, NACK- N or nY


Msg from client: Y

Server Acknowledges or not:? Ack-Y or y, NACK- N or nY


Msg from client: K

Server Acknowledges or not:? Ack-Y or y, NACK- N or nN


ubuntu@ubuntu-H81M-S:~$

CLIENT

ubuntu@ubuntu-H81M-S:~$ gcc slcl.c


ubuntu@ubuntu-H81M-S:~$ gcc slcl.c -o Client
ubuntu@ubuntu-H81M-S:~$ ./Client
Socket created successfully
Connected with server successfully
Enter the total frames: 4

Enter frame message: i

Server acknowledged
Enter frame message: A

Server acknowledged
Enter frame message: Y

Server acknowledged
Enter frame message: K

Server acknowledged

You might also like