在我的程序中,我尝试使用插座.插座(),当它连接以捕获一个莫尔斯电码时,将其解码,然后用插座.sendall(). 我有它,所以我可以连接到IP地址,解码信息,甚至发送回我的答案,但当我发回答案时,它说这是错误的,尽管我知道事实并非如此。我在想,也许,当我发回我的答案时,我是不是在它周围再发一组引号或其他什么的?任何帮助都将不胜感激。在
import socket
def morse(code):
decoded = []
CODE = [['.-', 'A'],['-...', 'B'],['-.-.', 'C'],['-..', 'D'],['.', 'E'],['..-.', 'F'],['--.', 'G'],['....', 'H'],['..', 'I'],['.---', 'J'],['-.-', 'K'],['.-..', 'L'],['--', 'M'],['-.', 'N'],['---', 'O'],['.--.', 'P'],['--.-', 'Q'],['.-.', 'R'],['...', 'S'],['-', 'T'],['..-', 'U'],['...-', 'V'],['.--', 'W'],['-..-', 'X'],['-.--', 'Y'],['--..', 'A']]
for i in CODE:
if i[0] == code:
decoded.append(i[1].lower())
if code == '':
decoded.append('.')
return decoded
def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
while 1:
data = s.recv(1024)
if data == "":
break
if "text:" in repr(data):
s.sendall(content)
print("Received:", repr(data))
if "-" in repr(data):
splitMorse = repr(data).split(' ')
splitMorse = splitMorse[8:len(splitMorse)-2]
decoded = []
for i in splitMorse:
decoded.extend(morse(i))
strDecoded = ''.join(decoded)
strDecoded = strDecoded.replace("....................................................", " ")
print("{}\n".format(strDecoded))
#HERE IS WHERE I AM SENDING THE STRING BACK
print(s.sendall("{}\n".format(strDecoded)))
print("Connection closed.")
s.shutdown(socket.SHUT_WR)
s.close()
content = "GET\n"
netcat('146.148.102.236', 24069, content)
在通过套接字发送字符串的最后,我添加了一个“\n”,因为否则它将不接受我的字符串,它将永远留在那里(因为键入后必须按enter键)。以下是我的输出:
^{pr2}$
我认为你的逻辑有缺陷。第一条消息包含
text:
,它也包含-
。我想你想要elif
作为你最后的if。在对于
if
中的if
语句序列,请尝试以下操作:相关问题 更多 >
编程相关推荐