2

サーバーを作成中ですが、壁にぶつかって乗り越えられないようです...

私が持っている現在のコードは、ユーザーがサーバーから切断するまで非常にうまく機能します。無限の量の\nが印刷され、その理由がわかりません。

問題がrecv関数にあることを私は知っています。それは私の糸脱毛と関係があると思いますが、それが何であるか理解できないようです。

これがコードです。誰かが私を助けてくれたらとてもありがたいです。

def recv(self, obj, addr, s):
    while True:
        try:print obj.recv(1024)
        except:pass

def connect(self, port):
    s = socket.socket()
    s.bind(('', port))
    s.listen(1)
    self.clearscreen()

    print "Waiting for connections..."
    while True:
        obj, addr = s.accept()
        verify = obj.recv(1024)
        if verify == "ea25364e2dab91b40ae4f73163854b5d":
            print "\n"+str(addr) + " has connected.\n "
            self.conns[addr] = obj
            try:
                Thread(target=self.handle, args=(obj, addr, s)).start()
                Thread(target=self.recv, args=(obj, addr, s)).start()
            except:pass
        else:pass
4

1 に答える 1

3

何が起こるかというと、空のバッファからデータを継続的に取得して出力します。実際に何かを得ていることを確認するために、recv()をチェックする必要があります。

data = obj.recv(1024)
if not data:
    return
print data
于 2012-11-07T22:52:31.867 に答える