用套接字编写一个投票系统的客户端与服务端
时间: 2024-05-12 07:20:08 浏览: 54
这里提供一个简单的投票系统的客户端和服务端的Python代码,使用套接字进行通信。
服务端代码:
```python
import socket
# 定义IP地址和端口号
host = '127.0.0.1'
port = 8000
# 创建一个TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 将套接字绑定到指定地址和端口号
server_socket.bind((host, port))
# 开始监听连接请求
server_socket.listen(1)
# 等待客户端连接
print('Waiting for connection...')
client_socket, client_address = server_socket.accept()
print(f'Connected by {client_address}')
# 定义投票选项和初始票数
options = ['A', 'B', 'C']
votes = [0, 0, 0]
# 发送投票选项给客户端
client_socket.send(str.encode('投票选项:\n'))
for i in range(len(options)):
client_socket.send(str.encode(f'{options[i]}: {votes[i]}票\n'))
# 接收客户端的投票
while True:
data = client_socket.recv(1024).decode()
if not data:
break
if data in options:
index = options.index(data)
votes[index] += 1
client_socket.send(str.encode(f'{data} 投票成功!\n'))
# 更新投票结果
result = ''
for i in range(len(options)):
result += f'{options[i]}: {votes[i]}票\n'
client_socket.send(str.encode(result))
else:
client_socket.send(str.encode('请输入正确的投票选项!\n'))
# 关闭套接字
client_socket.close()
server_socket.close()
```
客户端代码:
```python
import socket
# 定义IP地址和端口号
host = '127.0.0.1'
port = 8000
# 创建一个TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client_socket.connect((host, port))
# 接收并打印投票选项
data = client_socket.recv(1024).decode()
print(data)
while True:
data = client_socket.recv(1024).decode()
if not data:
break
print(data)
# 提示用户输入投票选项
while True:
vote = input('请输入你的投票选项(A/B/C):')
if vote in ['A', 'B', 'C']:
client_socket.send(str.encode(vote))
data = client_socket.recv(1024).decode()
print(data)
data = client_socket.recv(1024).decode()
print(data)
else:
print('请输入正确的投票选项!')
# 关闭套接字
client_socket.close()
```
使用方法:
1. 先运行服务端程序。
2. 再运行客户端程序,客户端会连接到服务端并接收投票选项。
3. 用户输入投票选项后,客户端将投票信息发送给服务端,服务端会更新投票结果并发送给客户端。
4. 如果用户输入错误的投票选项,客户端会提示用户重新输入。
阅读全文