检查给定字符串是否为回文串的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);
}
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP