服务器端代码
import socket
def reverse_string(data):
return data[::-1]
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 12345))
server_socket.listen(1)
print('服务器正在监听...')
while True:
client_socket, client_address = server_socket.accept()
print(f'与 {client_address} 建立连接')
data = client_socket.recv(1024).decode('utf-8')
reversed_data = reverse_string(data)
client_socket.send(reversed_data.encode('utf-8'))
client_socket.close()
代码解释
- 导入socket模块:
import socket
,用于进行网络编程,实现TCP协议。
- 定义字符串反转函数:
reverse_string
函数,使用切片操作[::-1]
将传入的字符串反转。
- 创建服务器套接字:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
,使用AF_INET
指定使用IPv4地址,SOCK_STREAM
指定使用TCP协议。
- 绑定地址和端口:
server_socket.bind(('127.0.0.1', 12345))
,将服务器套接字绑定到本地回环地址127.0.0.1
和端口12345
。
- 监听连接:
server_socket.listen(1)
,开始监听客户端连接,参数1
表示最多允许1个未接受的连接在队列中。
- 接受客户端连接并处理数据:
client_socket, client_address = server_socket.accept()
,接受客户端连接,返回新的客户端套接字和客户端地址。
data = client_socket.recv(1024).decode('utf-8')
,接收客户端发送的数据,1024
表示接收缓冲区大小,然后使用decode('utf-8')
将字节数据解码为字符串。
reversed_data = reverse_string(data)
,调用reverse_string
函数将接收到的字符串反转。
client_socket.send(reversed_data.encode('utf-8'))
,将反转后的字符串编码为字节数据并发送回客户端。
client_socket.close()
,关闭客户端套接字。
客户端代码
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 12345))
message = "Hello, Server!"
client_socket.send(message.encode('utf-8'))
data = client_socket.recv(1024).decode('utf-8')
print(f'从服务器接收到: {data}')
client_socket.close()
代码解释
- 导入socket模块:
import socket
,用于网络编程。
- 创建客户端套接字:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
,同样使用IPv4和TCP协议。
- 连接服务器:
client_socket.connect(('127.0.0.1', 12345))
,连接到服务器的地址和端口。
- 发送数据并接收响应:
message = "Hello, Server!"
,定义要发送给服务器的字符串。
client_socket.send(message.encode('utf-8'))
,将字符串编码为字节数据并发送给服务器。
data = client_socket.recv(1024).decode('utf-8')
,接收服务器返回的数据,解码为字符串。
print(f'从服务器接收到: {data}')
,打印接收到的数据。
- 关闭客户端套接字:
client_socket.close()
,关闭客户端套接字。