Client
This commit is contained in:
parent
35169e2e53
commit
ddef20a8e7
61
client.cpp
61
client.cpp
@ -7,6 +7,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define BUF 1024
|
||||
@ -85,13 +86,11 @@ int main(int argc, char **argv)
|
||||
printf("%s", buffer); // ignore error
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
printf(">> ");
|
||||
do {
|
||||
printf("Please specify a command (SEND, LIST, READ, DEL, QUIT): ");
|
||||
if (fgets(buffer, BUF - 1, stdin) != NULL)
|
||||
{
|
||||
int size = strlen(buffer);
|
||||
// remove new-line signs from string at the end
|
||||
size = strlen(buffer);
|
||||
if (buffer[size - 2] == '\r' && buffer[size - 1] == '\n')
|
||||
{
|
||||
size -= 2;
|
||||
@ -102,13 +101,63 @@ int main(int argc, char **argv)
|
||||
--size;
|
||||
buffer[size] = 0;
|
||||
}
|
||||
isQuit = strcmp(buffer, "quit") == 0;
|
||||
|
||||
isQuit = strcmp(buffer, "QUIT") == 0;
|
||||
|
||||
if (strcmp(buffer, "SEND") == 0)
|
||||
{
|
||||
char sender[BUF], receiver[BUF], subject[81], message[BUF * 10];
|
||||
printf("Sender: ");
|
||||
fgets(sender, BUF - 1, stdin);
|
||||
printf("Receiver: ");
|
||||
fgets(receiver, BUF - 1, stdin);
|
||||
printf("Subject: ");
|
||||
fgets(subject, 80, stdin);
|
||||
printf("Message: \n");
|
||||
char line[BUF];
|
||||
message[0] = '\0';
|
||||
while (true)
|
||||
{
|
||||
fgets(line, BUF - 1, stdin);
|
||||
if (strcmp(line, ".\n") == 0)
|
||||
break;
|
||||
strcat(message, line);
|
||||
}
|
||||
snprintf(buffer, sizeof(buffer), "SEND\n%s%s%s%s.\n", sender, receiver, subject, message);
|
||||
}
|
||||
else if (strcmp(buffer, "LIST") == 0)
|
||||
{
|
||||
char username[BUF];
|
||||
printf("Username: ");
|
||||
fgets(username, BUF - 1, stdin);
|
||||
snprintf(buffer, sizeof(buffer), "LIST\n%s", username);
|
||||
}
|
||||
else if (strcmp(buffer, "READ") == 0)
|
||||
{
|
||||
char username[BUF], msgNum[10];
|
||||
printf("Username: ");
|
||||
fgets(username, BUF - 1, stdin);
|
||||
printf("Message Number: ");
|
||||
fgets(msgNum, 9, stdin);
|
||||
snprintf(buffer, sizeof(buffer), "READ\n%s%s", username, msgNum);
|
||||
}
|
||||
else if (strcmp(buffer, "DEL") == 0)
|
||||
{
|
||||
char username[BUF], msgNum[10];
|
||||
printf("Username: ");
|
||||
fgets(username, BUF - 1, stdin);
|
||||
printf("Message Number: ");
|
||||
fgets(msgNum, 9, stdin);
|
||||
snprintf(buffer, sizeof(buffer), "DEL\n%s%s", username, msgNum);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// SEND DATA
|
||||
// https://man7.org/linux/man-pages/man2/send.2.html
|
||||
// send will fail if connection is closed, but does not set
|
||||
// the error of send, but still the count of bytes sent
|
||||
int size = strlen(buffer);
|
||||
|
||||
if ((send(create_socket, buffer, size + 1, 0)) == -1)
|
||||
{
|
||||
// in case the server is gone offline we will still not enter
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user