From eb2896a210da5c90ca974707930225ea36e8f3a1 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Tue, 5 Sep 2023 21:55:09 -0300 Subject: [PATCH] Graphic client.c and server.c time code execution created --- ...Cliente e Servidor via Conexão por Socket.png | Bin 0 -> 33933 bytes client | Bin 0 -> 17120 bytes graphic.py | 12 ++++++++++++ makefile | 4 ++-- requirements.txt | 1 + server | Bin 0 -> 17008 bytes 6 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 Transmissão de Buffers entre Cliente e Servidor via Conexão por Socket.png create mode 100755 client create mode 100644 graphic.py create mode 100644 requirements.txt create mode 100755 server diff --git a/Transmissão de Buffers entre Cliente e Servidor via Conexão por Socket.png b/Transmissão de Buffers entre Cliente e Servidor via Conexão por Socket.png new file mode 100644 index 0000000000000000000000000000000000000000..e5433318954881ea433913b1cba5b920f29f739d GIT binary patch literal 33933 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 literal 0 HcmV?d00001 diff --git a/client b/client new file mode 100755 index 0000000000000000000000000000000000000000..23d99befb3a73710bd172a5fa7af3f856272aec8 GIT binary patch literal 17120 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 Y6LPt%OT*QtB1JQART`K141BEkPr=iA9{>OV literal 0 HcmV?d00001 diff --git a/graphic.py b/graphic.py new file mode 100644 index 0000000..dd3a1da --- /dev/null +++ b/graphic.py @@ -0,0 +1,12 @@ +import matplotlib.pyplot as plt + +categorias = ["0,064KB","0,128KB","0,256KB","0,512KB","1KB","2KB","4KB","8KB"] +valores = [0.13,0.11,0.13,0.12,0.13,0.13,0.13,0.14] + +plt.bar(categorias, valores, color='purple', width=0.8) + +plt.xlabel('Tamanho do buffer em (KB)') +plt.ylabel('Tempo de execução em (ms)') +plt.title('Transmissão de Buffers entre Cliente e Servidor via Conexão por Socket') + +plt.show() diff --git a/makefile b/makefile index e55a264..98cb24b 100644 --- a/makefile +++ b/makefile @@ -11,8 +11,8 @@ clean: run_client: @$(CC) client.c -o client - @./client $(buffer_size)& + @./client $(buffer_size) run_server: @$(CC) server.c -o server - @./server $(buffer_size)& \ No newline at end of file + @./server $(buffer_size) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4b43f7e --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +matplotlib \ No newline at end of file diff --git a/server b/server new file mode 100755 index 0000000000000000000000000000000000000000..c1672122067af03b35ed75c0383da178aa2706eb GIT binary patch literal 17008 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 RMT)-mkkVM-G4QbBKL8xZ3jY8A literal 0 HcmV?d00001