Я довольно плохо знаком с сетями и программированием сокетов, используя 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
Я хочу закрыть любое подключение к внешнему порту, когда захочу. Я буду признателен за любую помощь в этом. Спасибо.