檢查給定字串是否為迴文串的TCP客戶端-伺服器程式


迴文是指正讀反讀都一樣的單詞、短語或序列,例如“madam”或“nurses run”。

TCP客戶端-伺服器程式

客戶端和伺服器配置,其中客戶端連線並將字串傳輸到伺服器,伺服器透過套接字連線顯示原始字串並向客戶端傳送確認資訊,說明該字串是否是迴文。

輸入 − WOW

輸出 − 迴文

輸入 − soap

輸出 − 不是迴文

工作原理?

  • 首先,建立客戶端-伺服器連線。

  • 連線建立後,客戶端利用send系統函式將使用者輸入的字串傳遞給伺服器。

  • 伺服器將在客戶端等待客戶端提供的字串。

  • 伺服器使用read系統呼叫讀取字串。

  • 之後,伺服器判斷字串是否為迴文,並將確認資訊返回給客戶端。

編譯

  • 首先以GCC伺服器執行伺服器應用程式。

server./server c –o
  • 在不同的終端執行GCC客戶端程式。

client./client c -o
  • 伺服器軟體正在等待客戶端的字串。

  • 客戶端,輸入字串。

  • 伺服器軟體將列印原始字串。

  • 客戶端軟體將列印結果。

TCP伺服器

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
main(){
   struct sockaddr_in client, server;
   int s1, n, sock, g, j, left, right, flag;
   char b11[20], b2[10], b3[10], b4[10];

   s1 = socket(AF_INET, SOCK_STREAM, 0);
   server.sin_family = AF_INET;
   server.sin_port = 20000;
   server.sin_addr.s_addr = inet_addr("127.0.0.1");
   bind(s1, (struct sockaddr*)&server, sizeof server);
   listen(s1, 1);
   n = sizeof client;
   sock = accept(s1, (struct sockaddr*)&client, &n);
   for (;;) {
      recv(sock, b11, sizeof(b1), 0);

      printf("
The string received is:%s
", b11);       if (strlen(b11) == 0)          flag = 1;       else {          left = 0;          right = strlen(b11) - 1;          flag = 1;          while (left < right && flag) {             if (b11[left] != b11[right])                flag = 0;                else {                   left++;                   right--;             }          }       }       send(sock, &flag, sizeof(int), 0);       break;    }    close(sock);    close(s1); }

客戶端

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
main(){
   struct sockaddr_in client;
   int s, flag;
   char buffer[20];
   s = socket(AF_NET, SOCK_STREAM, 0);
   client.sin_family = AF_NET;
   client.sin_port = 20000;
   client.sin_addr.s_addr = inet_addr("127.0.0.1");
   connect(s, (struct sockaddr*)&client, sizeof client);
   for (;;) {
      printf("
Enter a string to check palindrome: ");       scanf("%s", buffer);       printf("
Client: %s", buffer);       send(s, buffer, sizeof(buffer), 0);       recv(s, &flag, sizeof(int), 0);       if (flag == 1) {          printf("
Server: The string is Palindrome.
");          break;       }       else {          printf("
Server: The string isn't a palindrome.
");          break;       }    }    close(s); }

更新於:2021年10月28日

2K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.