Server.c (Receiver)
Server.c (Receiver)
sin_family = AF_INET;
#include <stdio.h> server_addr.sin_addr.s_addr = INADDR_ANY;
#include <stdlib.h> server_addr.sin_port = htons(PORT);
#include <string.h>
#include <unistd.h> if (bind(sockfd, (const struct sockaddr *)&server_addr,
#include <sys/types.h> sizeof(server_addr)) < 0) {
#include <sys/socket.h>
#include <netinet/in.h> perror("bind failed");
int pre_fnumber=-1;
} }
int f_number = 0;
if(f_number<pre_fnumber)
{
continue;
}
if (sent_bytes == -1) {
perror("send to failed");
exit(EXIT_FAILURE);
}
close(sockfd);
Client.c (Sender) close(sockfd);
#include <stdio.h>#include <stdlib.h> return -1;
#include <string.h> }
#include <unistd.h>
#include <sys/types.h> flags = flags | O_NONBLOCK;
#include <sys/socket.h>
#include <netinet/in.h> if (fcntl(sockfd, F_SETFL, flags) == -1) {
#include <arpa/inet.h> printf("Error setting socket to non-blocking mode.\n");
#include <fcntl.h> close(sockfd);
return -1;
#define PORT 8080 }
#define BUFFER_SIZE 4
#define TIMEOUT_SECONDS 3 memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
int send_and_receive_ack(char message[]) { server_addr.sin_port = htons(PORT);
int sockfd; if (inet_pton(AF_INET, "127.0.0.1", &(server_addr.sin_addr)) <= 0) {
struct sockaddr_in server_addr; perror("invalid address or address not supported");
socklen_t server_len; exit(EXIT_FAILURE);
char ack[BUFFER_SIZE]; }
ssize_t sent_bytes, received_bytes;
while (1) {
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { ssize_t msg_len = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct
perror("socket creation failed"); sockaddr *)&client_addr, &client_len);
exit(EXIT_FAILURE);
} if (msg_len == -1) {
int f_number = 0;
if (sent_bytes == -1) {
perror("sendto failed");
exit(EXIT_FAILURE);
close(sockfd);
return 0;
}
Client.c (Sender)
#include <stdio.h> int flags = fcntl(sockfd, F_GETFL, 0);
#include <stdlib.h>
#include <string.h> if (flags == -1) {
#include <unistd.h> printf("Error getting socket flags\n");
#include <sys/types.h> close(sockfd);
#include <sys/socket.h> return -1;
#include <netinet/in.h> }
#include <arpa/inet.h>
#include <fcntl.h> flags = flags | O_NONBLOCK;
server_addr.sin_family = AF_INET;
int send_and_receive_ack(char message[]) { server_addr.sin_port = htons(PORT);
int sockfd; if (inet_pton(AF_INET, "127.0.0.1", &(server_addr.sin_addr)) <=
struct sockaddr_in server_addr; 0) {
socklen_t server_len; perror("invalid address or address not supported");
char ack[BUFFER_SIZE]; exit(EXIT_FAILURE);
ssize_t sent_bytes, received_bytes; }
fd_set readFds;
FD_ZERO(&readFds); sent_bytes = sendto(sockfd, message, strlen(message), 0, (const
struct sockaddr *)&server_addr, sizeof(server_addr));
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (sent_bytes == -1) {
perror("socket creation failed"); perror("sendto failed");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
close(sockfd);
FD_SET(sockfd, &readFds);
return ack_in_number;
struct timeval timeout; }
timeout.tv_sec = TIMEOUT_SECONDS; }
timeout.tv_usec = 0;
exit(EXIT_FAILURE);
int main() { }
int sockfd;
char buffer[BUFFER_SIZE];
while (1) {
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
int r_time = rand() % 5;
perror("socket creation failed"); sleep(r_time);
memset(buffer, 0, BUFFER_SIZE);
exit(EXIT_FAILURE); client_len = sizeof(client_addr);
ssize_t msg_len = recvfrom(sockfd, buffer, BUFFER_SIZE, 0,
} (struct sockaddr *)&client_addr, &client_len);
if (msg_len == -1) {
perror("recvfrom failed");
exit(EXIT_FAILURE);
int f_number = 0;
if (sent_bytes == -1) {
perror("sendto failed");
exit(EXIT_FAILURE);
}
printf("Acknowledement send to client\n");
close(sockfd);
return 0;
}
Client.c (Sender)
#include <stdio.h> fd_set readFds;
#include <stdlib.h>
#include <string.h> FD_ZERO(&readFds);
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
#include <arpa/inet.h>
#include <fcntl.h> perror("socket creation failed");
exit(EXIT_FAILURE);
socklen_t server_len; }
exit(EXIT_FAILURE); }
} else if (selectResult == 0) {
if (received_bytes == -1) {
void send_window(char message[])
perror("recvfrom failed");
{
exit(EXIT_FAILURE);
char frame[5];
}
for(int i=0;i<window_size && i<r_send;i++)
int ack_in_number;
{
sscanf(ack, "%d", &ack_in_number);
close(sockfd); frame[0] = message[f_number];
return ack_in_number;
sprintf(frame + 1, "%d", f_number);
}
printf("sending the frame %d\n",f_number);
}
ack_array[0][i] = f_number;
}
void get_ack_send(char message[]) {
{ slide();
{ ack_array[1][window_size-1] =
send_and_receive_ack(frame);
printf("Acknowledgement for frame %d is
recived\n",ack_array[0][i]); f_number++;
r_send--; }
a_get++; }
if(r_send<window_size) else
{ {
ack_array[1][i] =
send_and_receive_ack(frame); }
void main()
char message[100];
scanf("%[^\n]",message);
r_send = len;
length = len;
Server.c (Receiver)
#include <stdio.h> sockfd = socket(AF_INET, SOCK_STREAM, 0);
#include <stdlib.h> if(sockfd < 0) {
#include <string.h> perror("Error in socket");
#include <arpa/inet.h> exit(1);
#define SIZE 1024 }
printf("Server socket created successfully.\n");
void write_file(int sockfd){
int n; server_addr.sin_family = AF_INET;
FILE *fp; server_addr.sin_port = port;
char *filename = "recv.txt"; server_addr.sin_addr.s_addr = inet_addr(ip);
char buffer[SIZE];
e = bind(sockfd, (struct sockaddr*)&server_addr,
fp = fopen(filename, "w"); sizeof(server_addr));
while (1) { if(e < 0) {
n = recv(sockfd, buffer, SIZE, 0); perror("Error in bind");
if (n <= 0){ exit(1);
break; }
return; printf("Binding successfull.\n");
}
fprintf(fp, "%s", buffer); if(listen(sockfd, 10) == 0){
bzero(buffer, SIZE); printf("Listening....\n");
} }else{
return; perror("Error in listening");
} exit(1);
}
int main(){ addr_size = sizeof(new_addr);
char *ip = "127.0.0.1"; new_sock = accept(sockfd, (struct sockaddr*)&new_addr,
int port = 8080; &addr_size);
int e; write_file(new_sock);
int sockfd, new_sock; printf("Data written in the file successfully.\n");
struct sockaddr_in server_addr, new_addr;
socklen_t addr_size; return 0;
char buffer[SIZE]; }
Client.c (Sender) int main(){
#include <stdio.h>
#include <stdlib.h> char *ip = "127.0.0.1";
#include <unistd.h> int port = 8080;
#include <string.h> int e;
int sockfd;
#include <arpa/inet.h>
#define SIZE 1024 struct sockaddr_in server_addr;
FILE *fp;
char *filename = "send.txt";
void send_file(FILE *fp, int sockfd){
sockfd = socket(AF_INET, SOCK_STREAM, 0);
int n;
if(sockfd < 0) {
char data[SIZE] = {0};
perror("Error in socket");
exit(1);
while(fgets(data, SIZE, fp) != NULL) {
}
if (send(sockfd, data, sizeof(data), 0) == -1) {
printf("Server socket created successfully.\n");
perror("Error in sending file.\n"); server_addr.sin_family = AF_INET;
server_addr.sin_port = port;
exit(1); server_addr.sin_addr.s_addr = inet_addr(ip);
e = connect(sockfd, (struct sockaddr*)&server_addr,
} sizeof(server_addr));
} perror("Error in socket");
} exit(1);
}
printf("Connected to Server.\n");
fp = fopen(filename, "r");
if (fp == NULL) {
exit(1);
send_file(fp, sockfd);
printf("File data sent successfully.\n");
printf("Closing the connection.\n");
close(sockfd);
return 0;
}
{
#include<stdio.h>
#include<stdlib.h> if( (packet_sz[i] + p_sz_rm) > b_size)
#include<unistd.h> {
#define NOF_PACKETS 10 if(packet_sz[i] > b_size)
{
int custom_rand(int a) printf("\n\nIncoming packet size (%dbytes) is Greater
{ than bucket capacity (%dbytes)-PACKET REJECTED",
int rn = (random() % 10) % a; packet_sz[i], b_size);
return rn == 0 ? 1 : rn; }
} else
{
printf("\n\nBucket capacity exceeded-PACKETS
REJECTED!!");
int main() }
{ else
int packet_sz[NOF_PACKETS], i, clk, b_size, o_rate,
p_sz_rm=0, p_sz, p_time, op; {