python - 如何修复 Python 上 p2p 聊天应用程序的“IndexError: list index out of range”错误?
问题描述
我正在用 Python 做 p2p 聊天应用程序。客户端的“message = inputt[1]”有错误。由于这个错误,当我想发送消息时,程序会打印“你必须写下你的名字”
我不知道如何解决,因为我不明白错误的逻辑。如果我能解释为什么会出现此错误和解决方案,那就太好了。
import socket
import json
import time
import threading
import datetime
onlineUsers = dict()
while True:
message = input()
if(message=='list'):
print('ONLINE USERS...')
for key in onlineUsers:
print(key)
else:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port=5001
try:
inputArray = message.split(':',1)
# 0=username 1=message
username=inputArray[0]
message=inputArray[1]
ip=onlineUsers[username]
s.connect((ip, port))
s.sendall(message)
except:
print("You must write your name <name: message >")
s.close()
解决方案
我认为问题所在的线索在于问题本身。打印语句说"You must write your name <name: message >"
,所以你的消息将是john : this is a test
,但是你正在发送this is a test
,当你拆分时:
会给你一个元素列表['this is a test']
,当你尝试获取这个列表的第二个索引时,你会得到IndexError: list index out of range
因此,如果您修复您的消息以匹配预期的格式,代码应该如下工作
message = 'john : this is a test'
inputArray = message.split(':')
# 0=username 1=message
username = inputArray[0].strip()
message = inputArray[1].strip()
print(username)
print(message)
输出将是
john
this is a test
推荐阅读
- angular - 如何动态地将 Angular 指令添加到网格中的行?
- tags - 如何在 Drupal 8 上的 TWIG 中以纯文本形式显示节点的标题?
- machine-learning - 何时应该使用反向传播更新神经网络中的权重?
- java - 无法连接到 Apache 后面的 Tomcat Web 套接字
- typescript - three.js 用 Angular 7 抛出“null”错误
- visual-studio - Visual Studio 测试播放列表架构在哪里?
- android - 无法生成签名的apk android
- angular - 使用Angular 7在IE11中根本没有加载ag-grid
- javascript - 使用动态表单发送电子邮件,但在收到电子邮件时未从数据库中获取值
- javascript - 转换