Python port forwarding/multiplexing server

前端 未结 3 1106
广开言路
广开言路 2021-02-03 11:02

I would like to make server that listen on UDP port 162 (SNMP trap) and then forwards this traffic to multiple clients. Also important is that the source port & address stay

3条回答
  •  不知归路
    2021-02-03 11:44

    I am not comfortable with twisted or scapy, but it's quite straightforward to do this with vanilla python sockets. An extra advantage of that is that it will be even more portable. This code works in my limited tests:

    #!/usr/bin/python
    from socket import *
    bufsize = 1024 # Modify to suit your needs
    targetHost = "somehost.yourdomain.com"
    listenPort = 1123
    
    def forward(data, port):
        print "Forwarding: '%s' from port %s" % (data, port)
        sock = socket(AF_INET, SOCK_DGRAM)
        sock.bind(("localhost", port)) # Bind to the port data came in on
        sock.sendto(data, (targetHost, listenPort))
    
    def listen(host, port):
        listenSocket = socket(AF_INET, SOCK_DGRAM)
        listenSocket.bind((host, port))
        while True:
            data, addr = listenSocket.recvfrom(bufsize)
            forward(data, addr[1]) # data and port
    
    listen("localhost", listenPort)
    

提交回复
热议问题