Untitled
unknown
plain_text
a year ago
1.5 kB
8
Indexable
#!/usr/bin/env python3
import socket
import struct
import sys
def send_to_tcp_server(host, port, payload):
# Ensure payload is of type bytes
if not isinstance(payload, bytes):
raise ValueError("Payload must be of type bytes")
# Size of the payload in bytes
payload_size = len(payload)
# Check if payload_size is less than or equal to 65535 (2 bytes)
if payload_size > 65535:
raise ValueError("Payload cannot be longer than 65535 bytes")
# Prepare data to send: 2-byte payload size + payload
# Use format 'H' (unsigned short) for 2-byte size
header = struct.pack('!H', payload_size)
message = header + payload
try:
# Create a TCP socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
# Connect to the server
sock.connect((host, port))
# Send the data
sock.sendall(message)
print(f"Data sent successfully to {host}:{port}")
except socket.error as e:
print(f"Socket error: {e}")
sys.exit(1)
except Exception as e:
print(f"Unexpected error: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: python send_to_tcp.py <host> <port> <payload>")
sys.exit(1)
host = sys.argv[1]
port = int(sys.argv[2])
payload = sys.argv[3].encode() # Assume payload is text that needs to be encoded to bytes
send_to_tcp_server(host, port, payload)
Editor is loading...
Leave a Comment