Python Socket Programmering OSERROR: [WinError 10038] Een bewerking werd geprobeerd op iets dat geen socket is

Ik werk aan deze code

from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
serversock = socket(AF_INET, SOCK_STREAM)
serversock.bind(ADDR)
serversock.listen(2)
while 1:
    print ("waiting on connection")
    clientsock, addr = serversock.accept()
    print ('connected from:', addr)
    while 1:
        data = clientsock.recv(1024).decode()
        if not data: break 
        clientsock.send(data.encode())
        clientsock.close()
serversock.close()

Ik krijg deze foutmelding:

OSError: [WinError 10038] an operation was attempted on something that is not a socket

Antwoord 1, Autoriteit 100%

U sluit de clientsock na het lezen van slechts een deel van de gegevens.

clientsock.close()

is op het verkeerde niveau van inkeping. Verplaats het naar links met één stap.


Antwoord 2

Het probleem is met Sluiten ().
Nadat de verbinding wordt gesloten, moet u de verbinding opnieuw initialiseren

Voeg deze regel binnen in terwijl Loop

serversock = socket(AF_INET, SOCK_STREAM)

Other episodes