服务器端
def address(x):
radd=(1,1)
f=open("name.list","rb")
for list in f:
list=list.split()
if(list[0]==x):
radd=(list[1],list[2])
break
return radd
f.close()
while True:
data=recvfrom(1024)
elif (data[0] == "send"):
f=open("name.list","rb")
add=address(data[1])
radd=add[0] + " " + add[1]
for list in f:
name=list.split()
if(int(addr[1])==int(name[2])):
s.sendto(str(radd),addr)
break
else:
s.sendto("not logged in ",addr)
f.close()
客户端
input="send usrname message"
s.sendto(input,server)
while True:
if (input[0]=="send"):
radd,add=s.recvfrom(1024)
print radd
radd=radd.split()
print radd
ip=radd[0]
print ip
port=int(radd[1])
print port
radd=(ip,port)
s.sendto(input[2],radd)
continue
文件存储格式 名称ipaddress端口
在第一个客户端上工作正常,但是当我打开第二个客户端并尝试向第一个客户端发送消息时,它会抛出此错误。第一个客户端能够向第二个客户端发送多条消息。我使用相同的client.py文件来调用客户端连接。
回溯(最近一次呼叫最后一次):文件" client.py",第30行,in port = int(radd [1])IndexError:列表索引超出范围
更好地理解我在每次数据转换后添加了print语句。如果省略套接字发送功能,它可以正常工作,但是使用sendto函数会导致错误,并且打印不会打印出预期的结果。
答案 0 :(得分:0)
/etc/environment
这个错误基本上意味着你正在访问列表第一个元素但是在第一个位置没有元素。 radd列表可能只包含一个元素。尝试检查并相应地修改程序代码。