📌  相关文章
📜  TCP客户端-服务器程序,以检查给定的字符串是否是回文(1)

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

TCP客户端-服务器程序介绍

本文介绍一个TCP客户端-服务器程序,用于检查给定的字符串是否是回文。该程序使用Python语言编写,可在TCP网络上进行通信。

服务器端
代码片段
import socket

HOST = 'localhost'  # 监听本地主机
PORT = 65432        # 监听的端口号

def palindrome(s):
    """检查字符串s是否是回文"""
    return s == s[::-1]

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    print(f'Server listening on {HOST}:{PORT}')
    conn, addr = s.accept()
    print(f'Connected by {addr}')
    with conn:
        while True:
            data = conn.recv(1024)
            if not data:
                break
            string = data.decode('utf-8').strip()
            if palindrome(string):
                conn.sendall(b'The string is palindrome')
            else:
                conn.sendall(b'The string is not palindrome')
            print(f'{addr}: {string}')
说明

服务器端使用socket模块中的socket类创建一个TCP套接字,并将其绑定到指定的主机和端口号。然后,服务器开始监听来自客户端的连接请求。当客户端连接到服务器时,服务器收到连接请求并接受连接。一旦连接建立,服务器就开始接收客户端发来的数据,并将其解码成字符串。然后服务器检查该字符串是否是回文。如果是回文,则服务器向客户端发送消息"The string is palindrome",否则向客户端发送消息"The string is not palindrome"

客户端
代码片段
import socket

SERVER_HOST = 'localhost'  # 服务器主机
SERVER_PORT = 65432        # 服务器端口号

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((SERVER_HOST, SERVER_PORT))
    while True:
        message = input('Enter a string (or \'quit\' to exit): ')
        if message.lower() == 'quit':
            break
        s.sendall(message.encode('utf-8'))
        data = s.recv(1024)
        print(data.decode('utf-8'))
说明

客户端同样使用socket模块中的socket类创建一个TCP套接字,并连接到指定的服务器主机和端口号。客户端从标准输入读取字符串,并向服务器发送该字符串。然后客户端等待服务器的响应,并将其解码成字符串并输出。如果客户端输入字符串为"quit",则客户端断开连接并退出程序。

总结

本文介绍了一个TCP客户端-服务器程序,用于检查给定的字符串是否是回文。该程序使用Python语言编写,可在TCP网络上进行通信。通过本程序,读者可以学习如何使用Python中的socket模块创建TCP客户端和服务器。此外,读者还可以学习如何将字符串编码和解码,并在TCP网络上进行通信。