Как закрыть порт на стороне сервера, используя python - PullRequest
0 голосов
/ 15 апреля 2020

Я довольно плохо знаком с сетями и программированием сокетов, используя python. Здесь я пытаюсь запустить сервер, запустить клиент и после установления правильного соединения отключить или полностью отключить порт. Я пробовал socket.close () и socket.shutdown (), но все еще не смог этого сделать. Кроме того, когда я пытаюсь сканировать порт на моей локальной машине, он всегда закрыт. Пожалуйста, найдите мой код ниже:

server.py

    from socket import *
    serverName = "XXXX.XX.X.XXX"
    #port range: 0 - 65535
    serverPort = 4444

    s = socket(AF_INET, SOCK_STREAM)
    s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    s.bind((serverName, serverPort))
    print('socket created')
    #number of allowed connections
    s.listen(3)
    print('Waiting for connections.......')

    while True:
         c, addr = s.accept()
         name = c.recv(1024).decode()
         inf = c.recv(1024).decode()
         print(addr)
         print(name)
         print(inf)
         c.send(bytes('Connection accepted','UTF-8')) 

     c.close()

client.py, запущенный с другого ноутбука

        import socket
        c = socket.socket()
        c.connect(('XXXX.XX.X.XXX',4444))
        print('trying to connect...')
        name = input('Enter your name: ')
        c.send(bytes(name,'utf-8'))
        for i in range(10):
             c.send(bytes(str(i),'utf-8'))
             print(i)
        print(c.recv(1024).decode())

        #c.close()

scan.py

      import socket
      s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      host = "XXX.XX.X.XX"
      def portScanner(port):
         if s.connect_ex((host,port)):
            s.settimeout(5)
            print("The port is closed")
      else:
         print("Port is open")

После запуска server.py и затем client.py консоль на server.py показывает следующий вывод:

         socket created
         Waiting for connections.......
         ('XXX.XXX.X.XX', YYYYY)
          test
          0123456789

Я попытался запустить c .close () в файле server.py, но это не так ничего, система просто не завершает выполнение.

Ниже выводится файл scan.py:

      portScanner(YYYYY)
      The port is closed

Я хочу закрыть любое подключение к внешнему порту, когда захочу. Я буду признателен за любую помощь в этом. Спасибо.

...