3

CMD モジュールで標準入力用のソケットを使用するのに苦労しています。これが私が持っているものです:

class Server(cmd.Cmd):
    use_rawinput = False 

    def __init__(self, port): 
        self.port = port
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.sock.bind(("", port))
        f = self.sock.makefile(mode='rw') 
        cmd.Cmd.__init__(self, stdin = f, stdout=sys.stdout) 


    def do_register(self, username):    
        print username

クライアントに接続してコマンドregister user1を実行すると、サーバーのコンソールに何も表示されません。

4

1 に答える 1

2

によって返されるファイルは、ソケットmakefileに対してのみ機能します。ソケットには、バイトの連続ストリーム (個々のパケットのみ) の概念がないため、 またはを使用できません。SOCK_STREAMSOCK_DGRAMreadwrite

socket.SOCK_STREAMの代わりにソケットを初期化する必要がありますsocket.SOCK_DGRAM

于 2012-10-05T06:44:15.793 に答える