import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as socket_server:
socket_server.connect(("77.222.42.207", 1337))
socket_server.send("get_flag".encode())
server_unswer = (socket_server.recv(1024)).decode()
print(server_unswer)
while (messsage := input("Я: ")) != "exit":
socket_server.send(messsage.encode())
messsage = socket_server.recv(1024)
messsage = messsage.decode()
print(messsage)
我正在嘗試向服務器發送一個字串,但我無法發送資料并獲得回應,這是什么問題,請幫助。
當我通過 netcat 連接到服務器時,一切都很好。
uj5u.com熱心網友回復:
看起來您的代碼沒有任何問題。只需創建一個簡單的服務器,如下所示并連接您的客戶端套接字程式。
import socket
server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM,
proto=socket.IPPROTO_TCP, fileno=None)
server.bind(('IP address', port))
server.listen(10)
client, _ = server.accept()
# Instead of a infinite while loop a for loop in given with a count of 10
for i in range(10):
data = client.recv(65535).decode()
print(data)
client.send(data.encode())
server.close()
顯然你必須更新socket_server.connect(("77.222.42.207", 1337))
uj5u.com熱心網友回復:
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as socket_server:
socket_server.connect(("77.222.42.207", 1337))
server_unswer = (socket_server.recv(1024)).decode()
print(server_unswer)
socket_server.send("get_flag\n".encode())
server_unswer = (socket_server.recv(1024)).decode()
print(server_unswer)
終于能得到服務器的回復了,是因為NetCat在發送文本的時候自動加了\n,而且服務器上的命令有效,但是我在發送文本的時候沒有加這個字符??
我必須弄清楚如何使用 Wireshark 來弄清楚)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482903.html
下一篇:如何在阻塞套接字中捕獲超時
