C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

クライアントサーバーモデルを使用してC/C++で文字列を反転します


ここでは、システムを作成する方法を説明します。ここでは、1つのクライアントとサーバーを作成し、クライアントは1つの文字列をサーバーに送信でき、サーバーは文字列を逆にしてクライアントに戻ります。

ここでは、ソケットプログラミングの概念を使用します。クライアントサーバー接続を確立するには、ポートを作成する必要があります。ポート番号は、ソケットで使用できる任意の1つの番号です。接続を確立するには、クライアントとサーバーに同じポートを使用する必要があります。

プログラムを起動するには、最初にサーバープログラムを起動します-

gcc Server.c –o server

次に、クライアントプログラムを起動します-

gcc Client.c –o server

これで、サーバーはクライアントからの文字列を待ちます。クライアント側からの入力として文字列を取得する必要があり、それからそれが転送されます。サーバーは文字列を出力し、逆の文字列も送信します。その後、クライアントはサーバーから逆の文字列を出力します。

//Client Side Code
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>
#define PORT 4000
main() {
   struct sockaddr_in address;
   int my_socket = 0, valread;
   struct sockaddr_in server_address;
   char str[100];
   int l;
   printf("Enter a String:");
   fgets(str, 100, stdin); //read string until new line character is pressed
   char buffer[1024] = { 0 }; //create a buffer and fill with 0
   // Creating socket file descriptor
   if ((my_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
      printf("\nUnable to create Socket \n");
      return -1;
   }
   memset(&server_address, '0', sizeof(server_address));
   server_address.sin_family = AF_INET;
   server_address.sin_port = htons(PORT);
   if (inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr) <= 0) {
      printf("\nThe address is not supported \n");
      return -1;
   }
   // connect the socket
   if (connect(my_socket, (struct sockaddr*)&server_address, sizeof(server_address)) < 0) {
      printf("\nUnable to connect to the server \n");
      return -1;
   }
   l = strlen(str);
   send(my_socket, str, sizeof(str), 0); // send message to server side
   valread = read(my_socket, str, l); // read message sent by server
   printf("%s\n", str);
}

//Server Side Code
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>
#define PORT 4000
char *strrev(char *str){
   char *p1, *p2;
   if (! str || ! *str)
      return str;
   for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2){
      *p1 ^= *p2;
      *p2 ^= *p1;
      *p1 ^= *p2;
   }
   return str;
}
main() {
   int server_fd, new_socket, valread;
   struct sockaddr_in address;
   char str[100];
   int addrlen = sizeof(address);
   char buffer[1024] = { 0 };
   int i, j, temp;
   int l;
   char* message = "Welcome to the server"; //initial message
   // Creating socket file descriptor
   if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
      perror("Socket connection failed");
      exit(EXIT_FAILURE);
   }
   address.sin_family = AF_INET;
   address.sin_addr.s_addr = INADDR_ANY;
   address.sin_port = htons(PORT);
   if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) { //attack with socket 4000
      perror("Unable to bind with the socket 4000");
      exit(EXIT_FAILURE);
   }
   if (listen(server_fd, 3) < 0) {
      perror("Listning.....");
      exit(EXIT_FAILURE);
   }
   if ((new_socket = accept(server_fd, (struct sockaddr*)&address,(socklen_t*)&addrlen)) < 0) {
      perror("Accept");
      exit(EXIT_FAILURE);
   }
   // read string send by client
   valread = read(new_socket, str, sizeof(str));
   l = strlen(str);
   printf("\nString sent by client:%s\n", str);
   strrev(str); //reverse the string
   send(new_socket, str, sizeof(str), 0);
   printf("\nReversed Strng is sent\n");
}

出力

クライアントサーバーモデルを使用してC/C++で文字列を反転します


  1. 再帰を使用して文を反転するC++プログラム

    文字列は、ヌル文字で終了する1次元の文字配列です。文字列の逆は、逆の順序で同じ文字列です。たとえば。 Original String: Apple is red Reversed String: der si elppA 再帰を使用して文字列の形式で文を反転するプログラムは次のとおりです。 例 #include <iostream> using namespace std; void reverse(char *str) {    if(*str == '\0')    return;    else {

  2. C#を使用して文字列を逆にする方法は?

    文字列を反転するには、Array.Reverse()メソッドを使用します。 逆にしたい文字列を設定します- string str = "Amit"; 上記の方法では、文字列を文字配列に変換しました- char[] ch = str.ToCharArray(); 次に、Reverse()メソッドが使用されます。 Array.Reverse(ch); 例 using System; namespace Demo {    class Program {       static void Main(string[] arg