📅  最后修改于: 2023-12-03 15:20:31.793000             🧑  作者: Mango
本文介绍一个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网络上进行通信。