编一个客户端程序和一个服务端程序,要求客户端程序向服务器程序发送一个字符串,服务器端程序将该字符串的字符顺序颠倒过来,发送给客户端,客户端将字符顺序颠倒的字符串显示出来。分别用TCP和UDP协议编写。
时间: 2024-03-23 19:39:12 浏览: 70
下面分别给出TCP和UDP协议下的客户端和服务端程序。
## TCP协议
### 服务端程序
```python
import socket
def reverse_string(string):
return string[::-1]
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(1)
print('Server is ready to receive')
while True:
client_socket, client_address = server_socket.accept()
print('Connection from', client_address)
string = client_socket.recv(1024).decode()
print('Received string:', string)
reversed_string = reverse_string(string)
client_socket.send(reversed_string.encode())
print('Reversed string sent:', reversed_string)
client_socket.close()
```
这个TCP服务端程序首先创建一个socket对象,绑定IP地址和端口号,然后开始监听。当有客户端连接时,接受连接请求,接收客户端发送的字符串并将字符串颠倒后发送回客户端,最后关闭连接。
### 客户端程序
```python
import socket
def reverse_string(string):
return string[::-1]
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8888))
string = input('Enter a string: ')
client_socket.send(string.encode())
reversed_string = client_socket.recv(1024).decode()
print('Reversed string:', reversed_string)
client_socket.close()
```
这个TCP客户端程序首先创建一个socket对象,连接到服务端的IP地址和端口号。然后从控制台输入一个字符串,发送给服务端,并接收服务端返回的颠倒后的字符串,最后关闭连接。
## UDP协议
### 服务端程序
```python
import socket
def reverse_string(string):
return string[::-1]
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('localhost', 8888))
print('Server is ready to receive')
while True:
data, client_address = server_socket.recvfrom(1024)
print('Connection from', client_address)
string = data.decode()
print('Received string:', string)
reversed_string = reverse_string(string)
server_socket.sendto(reversed_string.encode(), client_address)
print('Reversed string sent:', reversed_string)
```
这个UDP服务端程序首先创建一个socket对象,绑定IP地址和端口号。当有客户端发送数据时,接收数据并将其颠倒后发送回客户端。
### 客户端程序
```python
import socket
def reverse_string(string):
return string[::-1]
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
string = input('Enter a string: ')
client_socket.sendto(string.encode(), ('localhost', 8888))
reversed_string, server_address = client_socket.recvfrom(1024)
print('Reversed string:', reversed_string.decode())
client_socket.close()
```
这个UDP客户端程序首先创建一个socket对象,向服务端发送一个字符串。服务端将字符串颠倒后发送回客户端,客户端接收并显示在控制台上,最后关闭连接。
阅读全文