📜  使用客户端服务器模型反转C C++中的字符串(1)

📅  最后修改于: 2023-12-03 15:06:56.081000             🧑  作者: Mango

使用客户端服务器模型反转C/C++中的字符串

简介

在C/C++中,要反转一个字符串,常规的做法是使用循环和临时变量来实现。但是,我们也可以使用客户端服务器模型来反转字符串。本文将介绍使用客户端服务器模型反转C/C++中的字符串的方法。

客户端服务器模型

在计算机科学中,客户端服务器模型是一种常用的网络架构。客户端发送请求,服务器接受请求并作出响应。在本例中,我们可以将字符串看作客户端,将反转后的字符串看作服务器。客户端发送原始字符串,服务器接受并返回反转后的字符串。

实现
服务器端代码
#include <stdio.h>
#include <string.h>

char* reverseString(char* str) {
    static char reversed[100];
    int len = strlen(str);
    for (int i = 0; i < len; i++) {
        reversed[i] = str[len - i - 1];
    }
    reversed[len] = '\0';
    return reversed;
}

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%s", str);
    char* reversed = reverseString(str);
    printf("Reversed string: %s\n", reversed);
    return 0;
}

在服务器端,我们定义了一个反转字符串的函数reverseString。该函数接受一个字符串作为参数,并返回一个反转后的字符串。在该函数中,我们使用循环和临时变量来反转字符串并存储在静态变量reversed中。

客户端代码
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>

#define PORT 8888

int main(int argc, char const *argv[]) {
    int sock = 0, valread;
    struct sockaddr_in serv_addr;
    char str[100];
    char buffer[1024] = {0};
    printf("Enter a string: ");
    scanf("%s", str);

    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        printf("\nSocket creation error \n");
        return -1;
    }

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);

    // Convert IPv4 and IPv6 addresses from text to binary form 
    if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
        printf("\nInvalid address/ Address not supported \n");
        return -1;
    }

    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
        printf("\nConnection Failed \n");
        return -1;
    }

    send(sock , str , strlen(str) , 0 );
    printf("String sent\n");

    valread = read( sock , buffer, 1024);
    printf("Reversed string: %s\n", buffer );
    return 0;
}

在客户端代码中,我们首先定义了一个字符串str,并让用户输入一个待反转的字符串。然后,我们创建一个socket连接服务器,并将待反转的字符串发送给服务器。服务器收到字符串后,调用reverseString函数反转字符串并将结果返回给客户端。客户端接收并打印反转后的字符串。

运行
  • 首先编译并运行server.c,该程序将一直运行,并等待客户端的连接。
$ gcc server.c -o server
$ ./server
  • 然后编译并运行client.c,该程序将提示用户输入一个待反转的字符串,并将其发送给服务器。服务器将响应并返回反转后的字符串。
$ gcc client.c -o client
$ ./client
Enter a string: hello
String sent
Reversed string: olleh
总结

使用客户端服务器模型反转C/C++中的字符串可以让我们了解和掌握网络编程的基本概念和应用。此外,客户端服务器模型也是很多网络应用程序的基础架构,例如Web服务器、邮件服务器、文件服务器等。