网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

TCP客户端-服务器程序,用于判断给定的字符串是否为回文数。

更新时间:2026年03月27日   作者:spoto   标签(Tag):
先决条件:
  • C/C++中的套接字编程
  • 使用 `select()` 函数的 TCP 和 UDP 服务器。
  • 用C语言实现的UDP服务器-客户端模型
  • 用C语言实现TCP客户端-服务器模式
这篇文章描述了一种客户端与服务器之间的通信方式。在这种方式中,客户端向服务器发送一个字符串,而服务器则通过套接字连接将原始字符串返回给客户端,同时还会告知客户端该字符串是否为回文。例如:
输入: naman
输出结果: Palindrome

输入: geek
输出结果: Not Palindrome
接近/靠近:
  • 首先,需要建立客户端与服务器的连接。
  • 当连接建立后,客户端会通过send系统调用将用户输入的字符串发送给服务器。
  • 在服务器端,服务器会等待客户端发送来的字符串。
  • 服务器通过读取系统调用来读取该字符串。
  • 之后,服务器会检查该字符串是否为回文,然后将确认结果返回给客户端。
编译:
  1. 首先,运行服务器程序。
    gcc server.c -o server
    ./server
  2. 在另一个终端上运行客户端程序。
    gcc client.c -o client
    ./client
  3. 服务器程序正在等待客户端发送过来的字符串。
  4. 请在客户端输入该字符串。
  5. 服务器程序会打印出原始的字符串。
  6. 客户端程序将会打印出结果。
以下是上述方法的实现:
// 定义 in_addr 结构体#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>主要/核心(){结构体sockaddr_in客户端,服务器;整数s,n,袜子,g,j,左侧,正确/正确的,旗帜;字符/字母b1[20],b2[10],b3[10],b4[10];// 创建套接字s=插座(AF_INET,SOCK_STREAM,0);// 分配IP地址和端口号服务器.sin_family=AF_INET;// 这是正在运行的服务器的端口号。服务器.sin_port=2000;服务器.sin_addr.s_addr=inet_addr(127.0.0.1);// 绑定新创建的套接字// 针对给定的IP地址以及验证过程绑定(s,(结构体sockaddr*)&服务器,sizeof服务器);(s,1);n=sizeof客户/用户;袜子=接受(s,(结构体sockaddr*)&客户端,&n);为了(;;){接收(袜子,b1,sizeof(b1),0);// 每当有来自客户端的请求时。// 它将在这里被处理。printf("\n接收到的字符串为:%s\n",b1);if(strlen(b1)==0)旗帜=1;否则{左边=0;正确/正确的=strlen(b1)-1;旗帜=1;(左边<正确/正确的&&旗帜){if(b1[左边]!=b1[正确/正确的])旗帜=0;否则{左边++;正确/正确的--;}}}发送(袜子,&旗帜,sizeof(整数),0);打破/终止;}关闭(袜子);// 关闭套接字关闭(s);}
TCP客户端
// 定义 in_addr 结构体#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>主要/核心(){结构体sockaddr_in客户/用户;整数s,旗帜;字符/字母缓冲区[20];// 创建套接字s=插座(AF_INET,SOCK_STREAM,0);// 分配IP地址和端口号客户端.sin_family=AF_INET;客户端.sin_port=2000;客户/用户.sin_addr.s_addr=inet_addr(127.0.0.1);// 将客户端套接字与服务器套接字连接起来连接(s,(结构体sockaddr*)&客户端,sizeof客户端);为了(;;){printf("\n请输入一个字符串以判断其是否为回文:“);scanf(“%s”,缓冲区);printf("\n客户端:%s,缓冲区);发送(s,缓冲区,sizeof(缓冲区),0);接收(s,&旗帜,sizeof(整数),0);if(旗帜==1){printf("\n服务器:该字符串是一个回文词。\n");打破/中断;}否则{printf("\n服务器:该字符串并非回文数。\n");打破/中断;}}// 关闭套接字关闭(s);}
输出结果:
  • 服务器端:
  • 客户端侧:
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料