Socket通信 C语言 如何实现大小写转换?

我正在用C语言写一个可以实现大小写转换的socket通信,但是并不知道如何实现。以下是我的代码以及output,请问要如何更改?

//Server side
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT 10291
#define MAXLINE 1024

// Server Side code
int main()
{
    int sockfd;
    char buffer[MAXLINE];
    struct sockaddr_in servaddr, cliaddr;

    // Creating socket file descriptor
    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    {
        perror("socket creation failed");
        exit(EXIT_FAILURE);
    }

    bzero(&servaddr,sizeof servaddr);
    memset(&servaddr, 0, sizeof(servaddr));
    memset(&cliaddr, 0, sizeof(cliaddr));

    // Filling server information
    servaddr.sin_family = AF_INET;    // IPv4
    servaddr.sin_addr.s_addr = INADDR_ANY;
    servaddr.sin_port = htons(PORT);

    // Bind the socket with the server address
    if (bind(sockfd, (const struct sockaddr *) &servaddr,
            sizeof(servaddr)) < 0)
    {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }

    int len, n;

    len = sizeof(cliaddr);    //len is value/resuslt

    n = recvfrom(sockfd, (char*) buffer, MAXLINE,
        MSG_WAITALL, (struct sockaddr *) &cliaddr, &len);
    buffer[n] = '\0';

    // Encrypting The Client String
    int key = 5;
    for (int i = 0; buffer[i] != '\0'; ++i)
    {
        char ch = buffer[i];

        if (ch >= 'a' && ch <= 'z')
        {
            ch = ch + key;

            if (ch > 'z')
            {
                ch = ch - 'z' + 'a' - 1;
            }

            buffer[i] = ch;
        }
        else if (ch >= 'A' && ch <= 'Z')
        {
            ch = ch + key;

            if (ch > 'Z')
            {
                ch = ch - 'Z' + 'A' - 1;
            }

            buffer[i] = ch;
        }
    }

    //Returning Encrypted String Received By Client
    sendto(sockfd, (const char *) buffer, strlen(buffer),
        MSG_CONFIRM, (const struct sockaddr *) &cliaddr,
        len);
    // Giving Akcnowledgement
    printf("Encrypted Message Sent.\n");
    
    bzero(buffer, 1024);
    strcpy(buffer, "HI, THIS IS CLIENT.");
    printf("Client: %s\n", buffer);
    send(sockfd, buffer, strlen(buffer), 0);

    bzero(buffer, 1024);
    recv(sockfd, buffer, sizeof(buffer), 0);
    printf("Server: %s\n", buffer);

    return 0;
}

//Client side
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT 10291
#define MAXLINE 1024

// Driver code
int main()
{
    int sockfd;
    char buffer[MAXLINE];
    char clientMsg;
    struct sockaddr_in servaddr;

    // Creating socket file descriptor
    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    {
        perror("socket creation failed");
        exit(EXIT_FAILURE);
    }

    bzero(&servaddr,sizeof servaddr);
    memset(&servaddr, 0, sizeof(servaddr));

    // Filling server information
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(PORT);
    servaddr.sin_addr.s_addr = INADDR_ANY;
    
    //Connect to the Server
    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
    printf("Connected to the Server. \n");
    
    int n, len;

    // Getting Input From Client  
    printf("Please Enter Your Message To Be Encrypted: ");
    scanf("%s", &clientMsg);

    // Sending it to server to be encrypted
    sendto(sockfd, (const char *) &clientMsg, strlen(&clientMsg),
        MSG_CONFIRM, (const struct sockaddr *) &servaddr,
        sizeof(servaddr));
    printf("Message to be encrypted sent. \n");

    n = recvfrom(sockfd, (char*) buffer, MAXLINE,
        MSG_WAITALL, (struct sockaddr *) &servaddr, &len);
    buffer[n] = '\0';
    printf("Encrypted Message Received From Server : %s\n", buffer);

        bzero(buffer, 1024);
    strcpy(buffer, "HI, THIS IS CLIENT.");
    printf("Client: %s\n", buffer);
    send(sockfd, buffer, strlen(buffer), 0);

    bzero(buffer, 1024);
    recv(sockfd, buffer, sizeof(buffer), 0);
    printf("Server: %s\n", buffer);

    //Disconnet from the Server
    close(sockfd);
    printf("Disconneted from the Server. \n");
    
    return 0;
}

以下是output:

img

你到底只需要大小写转换,还是需要每个字符加上key进行加密?

小写转大写:
if (ch >= 'a' && ch <= 'z')
ch = ch -32;
//大写转小写
if (ch >= 'A' && ch <= 'Z')
ch = ch + 32;