add tool for listening http request
This commit is contained in:
parent
738b137f06
commit
52682fb22c
57
002.Listen_port_for_http/listen_port_for_http.py
Normal file
57
002.Listen_port_for_http/listen_port_for_http.py
Normal file
@ -0,0 +1,57 @@
|
||||
import socket
|
||||
import threading
|
||||
|
||||
def handle_client(client_socket):
|
||||
try:
|
||||
# 设置超时以避免长时间阻塞
|
||||
client_socket.settimeout(5)
|
||||
request_data = b''
|
||||
while True:
|
||||
chunk = client_socket.recv(4096)
|
||||
if not chunk:
|
||||
break
|
||||
request_data += chunk
|
||||
# 检查是否已经接收完头部(以两个换行符结尾)
|
||||
if b'\r\n\r\n' in request_data:
|
||||
break
|
||||
# 解码并打印请求数据
|
||||
decoded_data = request_data.decode('utf-8', errors='replace')
|
||||
print("=" * 50)
|
||||
print(f"Received HTTP Request:\n{decoded_data}")
|
||||
print("=" * 50)
|
||||
except Exception as e:
|
||||
print(f"Error handling request: {e}")
|
||||
finally:
|
||||
client_socket.close()
|
||||
|
||||
def start_server(port):
|
||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
# 允许地址重用,避免重启时端口占用
|
||||
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
server.bind(('0.0.0.0', port))
|
||||
server.listen(5)
|
||||
print(f"[*] Listening on 0.0.0.0:{port}")
|
||||
|
||||
try:
|
||||
while True:
|
||||
client, addr = server.accept()
|
||||
print(f"[*] Accepted connection from {addr[0]}:{addr[1]}")
|
||||
handler = threading.Thread(target=handle_client, args=(client,))
|
||||
handler.start()
|
||||
except KeyboardInterrupt:
|
||||
print("\n[*] Server shutting down.")
|
||||
server.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
if len(sys.argv) != 2:
|
||||
print(f"Usage: {sys.argv[0]} <port>")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
port = int(sys.argv[1])
|
||||
start_server(port)
|
||||
except ValueError:
|
||||
print("Error: Port must be a number.")
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
6
002.Listen_port_for_http/readme.md
Normal file
6
002.Listen_port_for_http/readme.md
Normal file
@ -0,0 +1,6 @@
|
||||
# 使用方法
|
||||
|
||||
``````shell
|
||||
python listen_port_for_http.py <port>
|
||||
``````
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
# 工具列表
|
||||
|
||||
- [001.add prefix 0 for directory](./001.add_prefix_0_for_directory):用于遍历当前文件夹并为每个文件夹加一个前缀0
|
||||
- [002.listen port for http](./002.Listen_port_for_http): 用于监听特定端口的http请求
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user