我需要将用户名、密码和消息发送到 TCP 服务器,以获得我正在处理的代码挑战所需的输出。我收到了这组指示:
Connect to alien server ('localhost', 10000),
Then send USER followed by aliensignal,
Then send PASS followed by unlockserver,
Next SEND followed by moonbase.
Then send END and if all followed key will provided.
Run Code Online (Sandbox Code Playgroud)
我写了一个 python 代码,它的功能与它所说的完全一样:
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 10000))
clientsocket.send('USER: aliensignal')
clientsocket.send('PASS: unlockserver')
clientsocket.send('SEND: moonbase')
clientsocket.send('END')
data = clientsocket.recv(4096)
print(data)
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是:
############# DARKSTORE KEY SERVER SPEC ############################
Set username then password. Once set send name then end connection
and you access key will be sent.
USER: Tell server you will be sending username
PASS: Tell server you will be sending password
SEND: Tell server you will be sending data. (Must be authenticated)
END: Tell server to end transaction.
######################################################
Run Code Online (Sandbox Code Playgroud)
无论我是否发送用户名和密码,它都会给我这个输出。有谁知道为什么会发生这种情况?
首先,\xe2\x80\x99 不需要 USER、PASS、SEND 和 END 之后的冒号。
\n\n此外,挑战告诉您每次发送后都需要接收数据。
\n\n最后需要将关键词和数据分开发送
\n\n所以:
\n\nimport socket\n\nclientsocket = ...\nclientsocket.connect(...)\n\nclientsocket.send(\xe2\x80\x98USER\xe2\x80\x99)\nprint(clientsocket.recv(1024))\nclientsocket.send(\xe2\x80\x98aliensignal\xe2\x80\x99)\nprint(clientsocket.recv(1024))\n#etc...\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18363 次 |
| 最近记录: |