10

私はこのコードに取り組んでいます

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()

次のエラーが表示されます。

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

2 に答える 2

22

データの一部のみを読み取った後、clientsock を閉じています。

clientsock.close()

インデントのレベルが間違っています。1 ステップ左に移動します。

于 2013-03-04T20:12:41.223 に答える
1

問題は close() にあります。接続が近づいたら、接続を再度初期化する必要があります

この行をwhileループ内に追加します

serversock = socket(AF_INET, SOCK_STREAM)
于 2021-03-30T14:51:05.903 に答える