From 396dfddd63c6acecc6ecf7e0a51940616e5bf554 Mon Sep 17 00:00:00 2001 From: Mohtashim Nawaz <35381380+Stark-Tony@users.noreply.github.com> Date: Fri, 7 Feb 2020 15:37:58 +0530 Subject: [PATCH] Add files via upload --- cnlabtest/CN/A3/q2-audio/a.out | Bin 0 -> 13360 bytes cnlabtest/CN/A3/q2-audio/main.c | 138 ++++++++++++++++++++++++++++++++ cnlabtest/CN/A3/q2/client | Bin 0 -> 12928 bytes cnlabtest/CN/A3/q2/client.c | 89 ++++++++++++++++++++ cnlabtest/CN/A3/q2/server | Bin 0 -> 13064 bytes cnlabtest/CN/A3/q2/server.c | 113 ++++++++++++++++++++++++++ cnlabtest/fork/client1.c | 79 ++++++++++++++++++ cnlabtest/fork/client2.c | 79 ++++++++++++++++++ cnlabtest/fork/client3.c | 79 ++++++++++++++++++ cnlabtest/fork/hi.txt | 1 + cnlabtest/fork/program1.txt | 1 + cnlabtest/fork/program2.txt | 1 + cnlabtest/fork/program3.txt | 1 + cnlabtest/fork/server.c | 95 ++++++++++++++++++++++ 14 files changed, 676 insertions(+) create mode 100644 cnlabtest/CN/A3/q2-audio/a.out create mode 100644 cnlabtest/CN/A3/q2-audio/main.c create mode 100644 cnlabtest/CN/A3/q2/client create mode 100644 cnlabtest/CN/A3/q2/client.c create mode 100644 cnlabtest/CN/A3/q2/server create mode 100644 cnlabtest/CN/A3/q2/server.c create mode 100644 cnlabtest/fork/client1.c create mode 100644 cnlabtest/fork/client2.c create mode 100644 cnlabtest/fork/client3.c create mode 100644 cnlabtest/fork/hi.txt create mode 100644 cnlabtest/fork/program1.txt create mode 100644 cnlabtest/fork/program2.txt create mode 100644 cnlabtest/fork/program3.txt create mode 100644 cnlabtest/fork/server.c diff --git a/cnlabtest/CN/A3/q2-audio/a.out b/cnlabtest/CN/A3/q2-audio/a.out new file mode 100644 index 0000000000000000000000000000000000000000..7999e0dbeb8cd8d274b1f3d79ca0b5e09cae92a0 GIT binary patch literal 13360 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 rAzSPZuOBqO*>^+3_}#qJpx?9 +#include +#include +#include +#include +#include +#include + +#define FRAMES_PER_BUFFER 1024 + +typedef struct +{ + uint16_t formatType; + uint8_t numberOfChannels; + uint32_t sampleRate; + size_t size; + float *recordedSamples; +} AudioData; + +typedef struct +{ + float *snippet; + size_t size; +} AudioSnippet; + +AudioData initAudioData(uint32_t sampleRate, uint16_t channels, int type) +{ + AudioData data; + data.formatType = type; + data.numberOfChannels = channels; + data.sampleRate = sampleRate; + data.size = 0; + data.recordedSamples = NULL; + return data; +} + +float avg(float *data, size_t length) +{ + float sum = 0; + for (size_t i = 0; i < length; i++) + { + sum += fabs(*(data + i)); + } + return (float) sum / length; +} + +long storeFLAC(AudioData *data, const char *fileName) +{ + + uint8_t err = SF_ERR_NO_ERROR; + SF_INFO sfinfo = + { + .channels = data->numberOfChannels, + .samplerate = data->sampleRate, + .format = SF_FORMAT_FLAC | SF_FORMAT_PCM_16 + }; + + SNDFILE *outfile = sf_open(fileName, SFM_WRITE, &sfinfo); + if (!outfile) return -1; + + // Write the entire buffer to the file + long wr = sf_writef_float(outfile, data->recordedSamples, data->size / sizeof(float)); + err = data->size - wr; + + // Force write to disk and close file + sf_write_sync(outfile); + sf_close(outfile); + puts("Wrote to file!!!!"); + return err; +} + +int main(void) +{ + PaError err = paNoError; + if((err = Pa_Initialize())) goto done; + const PaDeviceInfo *info = Pa_GetDeviceInfo(Pa_GetDefaultInputDevice()); + AudioData data = initAudioData(44100, info->maxInputChannels, paFloat32); + AudioSnippet sampleBlock = + { + .snippet = NULL, + .size = FRAMES_PER_BUFFER * sizeof(float) * data.numberOfChannels + }; + PaStream *stream = NULL; + sampleBlock.snippet = malloc(sampleBlock.size); + time_t talking = 0; + time_t silence = 0; + PaStreamParameters inputParameters = + { + .device = Pa_GetDefaultInputDevice(), + .channelCount = data.numberOfChannels, + .sampleFormat = data.formatType, + .suggestedLatency = info->defaultHighInputLatency, + .hostApiSpecificStreamInfo = NULL + }; + + if((err = Pa_OpenStream(&stream, &inputParameters, NULL, data.sampleRate, FRAMES_PER_BUFFER, paClipOff, NULL, NULL))) goto done; + if((err = Pa_StartStream(stream))) goto done; + for(int i = 0;;) + { + err = Pa_ReadStream(stream, sampleBlock.snippet, FRAMES_PER_BUFFER); + if (err) goto done; + else if(avg(sampleBlock.snippet, FRAMES_PER_BUFFER) > 0.000550 && i < 1000) // talking + { + printf("You're talking! %d\n", i); + i++; + + time(&talking); + data.recordedSamples = realloc(data.recordedSamples, sampleBlock.size * i); + data.size = sampleBlock.size * i; + if (data.recordedSamples) memcpy((char*)data.recordedSamples + ((i - 1) * sampleBlock.size), sampleBlock.snippet, sampleBlock.size); + else + { + free(data.recordedSamples); + data.recordedSamples = NULL; + data.size = 0; + } + } + else //silence + { + double test = difftime(time(&silence), talking); + if (test >= 1.5 && test <= 10) + { + char buffer[100]; + snprintf(buffer, 100, "file:%d.flac", i); + storeFLAC(&data, buffer); + talking = 0; + free(data.recordedSamples); + data.recordedSamples = NULL; + data.size = 0; + } + } + } + +done: + free(sampleBlock.snippet); + Pa_Terminate(); + return err; +} \ No newline at end of file diff --git a/cnlabtest/CN/A3/q2/client b/cnlabtest/CN/A3/q2/client new file mode 100644 index 0000000000000000000000000000000000000000..0b943129107304d9c6891ca49e0ce275b2cec3b8 GIT binary patch literal 12928 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 F{~M(b! +#include +#include +#include +#include +#include +#include +#include +#include + + +int main() +{ + char buf[100]; + int sock_fd, t; + struct sockaddr_in clientaddr; + fd_set n; + memset(&clientaddr,0,sizeof(clientaddr)); + sock_fd = socket(AF_INET,SOCK_STREAM,0); + if (sock_fd==-1) + { + printf("Socket creation error\n"); + return 0; + } + + clientaddr.sin_family = AF_INET; + clientaddr.sin_addr.s_addr=INADDR_ANY; + clientaddr.sin_port=5005; + + t = connect(sock_fd,(struct sockaddr *)&clientaddr,sizeof(clientaddr)); + if (t==-1) + { + printf("Connection error\n"); + return 0; + } + + + printf("Type your Message and press Enter\n"); + while (1) + { + FD_ZERO(&n); + FD_SET(0,&n); + FD_SET(sock_fd,&n); + int ret=select(10,&n,0,0,0); + if (ret==-1) + { + printf("SELECT Error\n"); + close(sock_fd); + return 0; + } + else if (FD_ISSET(0,&n)) + { + + fgets(buf,100,stdin); + + t = send(sock_fd,buf,100,0); + if (t==-1) + { + printf("Message Send error\n"); + return 0; + } + if (strncmp(buf,"bye",3)==0) + { + close(sock_fd); + return 0; + } + + } + else if (FD_ISSET(sock_fd,&n)) + { + t = recv(sock_fd,buf,100,0); + if (t==-1) + { + printf("Message Receive error\n"); + close(sock_fd); + return 0; + } + if (strncmp(buf,"bye",3)==0) + { + close(sock_fd); + return 0; + } + printf("\nMessage from Server: %s\n",buf); + } + } + return 0; +} + +//scp [remoteUserName]@[ip]:[path to file] [path where to copy in your comp.] \ No newline at end of file diff --git a/cnlabtest/CN/A3/q2/server b/cnlabtest/CN/A3/q2/server new file mode 100644 index 0000000000000000000000000000000000000000..a585e01c7e1533075279e82ab131cf42f1e6bbfe GIT binary patch literal 13064 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 RRHSI%d6vd;R#en&|8E!|hY|n) literal 0 HcmV?d00001 diff --git a/cnlabtest/CN/A3/q2/server.c b/cnlabtest/CN/A3/q2/server.c new file mode 100644 index 0000000..d790436 --- /dev/null +++ b/cnlabtest/CN/A3/q2/server.c @@ -0,0 +1,113 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + int sock_fd, new_fd, t; + socklen_t len; + char buf[100]; + fd_set n; + struct sockaddr_in serveraddr, clientaddr; + + memset(&serveraddr,0,sizeof(serveraddr)); + memset(&clientaddr,0,sizeof(clientaddr)); + + sock_fd = socket(AF_INET,SOCK_STREAM,0); + if (sock_fd==-1) + { + printf("Socket creation error\n"); + return 0; + } + + + serveraddr.sin_family=AF_INET; + serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); + serveraddr.sin_port=5005; + + t = bind(sock_fd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); + if (t==-1) + { + printf("Bind error\n"); + return 0; + } + + t = listen(sock_fd,20); + if (t==-1) + { + printf("Listen error\n"); + return 0; + } + + len = sizeof(clientaddr); + new_fd = accept(sock_fd,(struct sockaddr *)&clientaddr, &len); + if (new_fd==-1) + { + printf("New_FD error\n"); + return 0; + } + printf("Type your Message and press Enter\n"); + while (1) + { + FD_ZERO(&n); + FD_SET(0,&n); + FD_SET(new_fd,&n); + int ret=select(10,&n,0,0,0); + if (ret==-1) + { + printf("SELECT Error\n"); + close(new_fd); + close(sock_fd); + return 0; + } + else if (FD_ISSET(0,&n)) + { + fgets(buf,100,stdin); + + t = send(new_fd,buf,100,0); + if (t==-1) + { + printf("Message Send error\n"); + return 0; + } + if (strncmp(buf,"bye",3)==0) + { + close(new_fd); + close(sock_fd); + return 0; + } + + } + else if (FD_ISSET(new_fd,&n)) + { + t = recv(new_fd,buf,100,0); + if (t==-1) + { + printf("Message Receive error\n"); + close(new_fd); + close(sock_fd); + return 0; + } + if (strncmp(buf,"bye",3)==0) + { + close(new_fd); + close(sock_fd); + return 0; + } + printf("\nMessage from Client: %s\n",buf); + } + } + close(new_fd); + close(sock_fd); + return 0; +} + + + + diff --git a/cnlabtest/fork/client1.c b/cnlabtest/fork/client1.c new file mode 100644 index 0000000..d4d41aa --- /dev/null +++ b/cnlabtest/fork/client1.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX 500 +#define PORT 5432 + + + + + +int main(int argc, char* argv[]) +{ + int sockfd , connfd; + struct sockaddr_in sin,cli; + struct hostent *hp; + + char *host; + + host = argv[1]; + + //printf("%s\n", host); + hp = gethostbyname(host); + + + + + bzero(&sin, sizeof(sin)); + + sin.sin_family = AF_INET; + bcopy(hp->h_addr,(char*)&sin.sin_addr,hp->h_length); + sin.sin_port = htons(PORT); + + sockfd = socket(PF_INET, SOCK_STREAM,0); + + if(sockfd == -1) + { + printf("socket creation failed\n"); + } + + + if(connect(sockfd,( struct sockaddr*)&sin,sizeof(sin))!=0) + { + printf("error\n"); + } + else + { + printf("I am connected\n"); + + char name[7] = "hi.txt\0"; + + send(sockfd, name, sizeof(name),0); + + // receive file + + char file[11]; + + recv(sockfd, file, sizeof(file),0); + + for(int i=0;i<11;i++) + { + file[i] = file[i] ^ 'S'; + } + + printf("%s\n", file); + FILE *fd = fopen("program1.txt", "w"); + fprintf(fd,"%s",file); + + + } + + + close(sockfd); + +} diff --git a/cnlabtest/fork/client2.c b/cnlabtest/fork/client2.c new file mode 100644 index 0000000..c03a9fa --- /dev/null +++ b/cnlabtest/fork/client2.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX 500 +#define PORT 5432 + + + + + +int main(int argc, char* argv[]) +{ + int sockfd , connfd; + struct sockaddr_in sin,cli; + struct hostent *hp; + + char *host; + + host = argv[1]; + + //printf("%s\n", host); + hp = gethostbyname(host); + + + + + bzero(&sin, sizeof(sin)); + + sin.sin_family = AF_INET; + bcopy(hp->h_addr,(char*)&sin.sin_addr,hp->h_length); + sin.sin_port = htons(PORT); + + sockfd = socket(PF_INET, SOCK_STREAM,0); + + if(sockfd == -1) + { + printf("socket creation failed\n"); + } + + + if(connect(sockfd,( struct sockaddr*)&sin,sizeof(sin))!=0) + { + printf("error\n"); + } + else + { + printf("I am connected\n"); + + char name[7] = "hi.txt\0"; + + send(sockfd, name, sizeof(name),0); + + // receive file + + char file[11]; + + recv(sockfd, file, sizeof(file),0); + + for(int i=0;i<11;i++) + { + file[i] = file[i] ^ 'S'; + } + + printf("%s\n", file); + FILE *fd = fopen("program2.txt", "w"); + fprintf(fd,"%s",file); + + + } + + + close(sockfd); + +} diff --git a/cnlabtest/fork/client3.c b/cnlabtest/fork/client3.c new file mode 100644 index 0000000..ac8c4ed --- /dev/null +++ b/cnlabtest/fork/client3.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX 500 +#define PORT 5432 + + + + + +int main(int argc, char* argv[]) +{ + int sockfd , connfd; + struct sockaddr_in sin,cli; + struct hostent *hp; + + char *host; + + host = argv[1]; + + //printf("%s\n", host); + hp = gethostbyname(host); + + + + + bzero(&sin, sizeof(sin)); + + sin.sin_family = AF_INET; + bcopy(hp->h_addr,(char*)&sin.sin_addr,hp->h_length); + sin.sin_port = htons(PORT); + + sockfd = socket(PF_INET, SOCK_STREAM,0); + + if(sockfd == -1) + { + printf("socket creation failed\n"); + } + + + if(connect(sockfd,( struct sockaddr*)&sin,sizeof(sin))!=0) + { + printf("error\n"); + } + else + { + printf("I am connected\n"); + + char name[7] = "hi.txt\0"; + + send(sockfd, name, sizeof(name),0); + + // receive file + + char file[11]; + + recv(sockfd, file, sizeof(file),0); + + for(int i=0;i<11;i++) + { + file[i] = file[i] ^ 'S'; + } + + printf("%s\n", file); + FILE *fd = fopen("program3.txt", "w"); + fprintf(fd,"%s",file); + + + } + + + close(sockfd); + +} diff --git a/cnlabtest/fork/hi.txt b/cnlabtest/fork/hi.txt new file mode 100644 index 0000000..c59f2ce --- /dev/null +++ b/cnlabtest/fork/hi.txt @@ -0,0 +1 @@ +This is a sample file!!!!!!!!!!!!!!!! diff --git a/cnlabtest/fork/program1.txt b/cnlabtest/fork/program1.txt new file mode 100644 index 0000000..18e1714 --- /dev/null +++ b/cnlabtest/fork/program1.txt @@ -0,0 +1 @@ +This is a s \ No newline at end of file diff --git a/cnlabtest/fork/program2.txt b/cnlabtest/fork/program2.txt new file mode 100644 index 0000000..18e1714 --- /dev/null +++ b/cnlabtest/fork/program2.txt @@ -0,0 +1 @@ +This is a s \ No newline at end of file diff --git a/cnlabtest/fork/program3.txt b/cnlabtest/fork/program3.txt new file mode 100644 index 0000000..18e1714 --- /dev/null +++ b/cnlabtest/fork/program3.txt @@ -0,0 +1 @@ +This is a s \ No newline at end of file diff --git a/cnlabtest/fork/server.c b/cnlabtest/fork/server.c new file mode 100644 index 0000000..ad7c247 --- /dev/null +++ b/cnlabtest/fork/server.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX 500 +#define PORT 5432 +char buffer[32]; + + +int main() +{ + int sockfd , connfd; + struct sockaddr_in sin,cli; + + sockfd = socket(PF_INET, SOCK_STREAM,0); + + if(sockfd == -1) + { + printf("socket creation failed\n"); + } + + bzero(&sin, sizeof(sin)); + + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = INADDR_ANY; + sin.sin_port = htons(PORT); + + if(bind(sockfd,(struct sockaddr*)&sin,sizeof(sin))!=0) + { + printf("socket binding failed\n"); + } + + if(listen(sockfd,5)!=0) + { + printf("failed\n"); + } + + for(int i=0;i<3;i++) + { + if(fork() == 0) + { + printf("[son] pid %d from [parent] pid %d\n",getpid(),getppid()); + int len = sizeof(sin); + connfd = accept(sockfd, ( struct sockaddr*)&sin,&len); + + if(connfd<0) + { + printf("accept failed\n"); + } + + else + { + printf("%d is connected\n", getpid()); + for(int i=0;i<32;i++) + { + buffer[i] = '\0'; + } + recv(connfd, buffer , sizeof(buffer),0); + + FILE* fp = fopen(buffer,"r"); + + + for(int i=0;i<32;i++) + { + buffer[i] = '\0'; + } + + + char ch, ch2; + for (i = 0; i < 32; i++) { + ch = fgetc(fp); + printf("%c",ch); + ch2 = ch ^ 'S'; + buffer[i] = ch2; + } + printf("\n"); + + send(connfd, buffer, sizeof(buffer), 0); + } + + close(sockfd); + + exit(0); + } + + } + + for(int i=0;i<3;i++) // loop will run n times (n=5) + wait(NULL); + +}