1

私はツイストを学んでいるので、私が持っているブラックジャック pygame と統合することができます。あるクライアントからサーバーにデータを渡し、次に他のクライアントにデータを渡す方法を考え出すとき、この例では、各クライアント画面で通常端末に出力される文字列を操作する方法を確認しようとしていました。

操作とは、「データ」のデータ型を list、int、tuple などに変更し、その情報を出力し(type(data))、キーワードの条件を設定することを意味します。

from twisted.internet import stdio, reactor, protocol
from twisted.protocols import basic
import re

## when client receives data from server // the client script checks then blits ##

class DataForwardingProtocol(protocol.Protocol):
    def __init__(self):
        self.output = None
        self.normalizeNewlines = False

    def dataReceived(self,data):
        if self.normalizeNewlines:

    ## see if data is == to secret ##
    ## this never returns True ? ##
            if data == 'secret':
                print "This line isn't secure"
            else:
                data = re.sub(r"(\r\n|\n)","\r\n",data)
        if self.output:
            if data == "secret":
                print "This line isn't secure"
            else:

         ## this will return the error message below ##
         ## so I'm very unsure of what is going on with 'data' ##
                self.output.write(type(data))

class StdioProxyProtocol(DataForwardingProtocol):
    def connectionMade(self):
        inputForwarder = DataForwardingProtocol()
        inputForwarder.output = self.transport
        inputForwarder.normalizeNewlines = True
        stdioWrapper = stdio.StandardIO(inputForwarder)
        self.output = stdioWrapper

class StdioProxyFactory(protocol.ClientFactory):
    protocol = StdioProxyProtocol

reactor.connectTCP('192.168.1.2', 6000, StdioProxyFactory())
reactor.run()

戻り値:

Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 614, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 203, in doRead
    return self._dataReceived(data)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 209, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "Downloads/trial.py", line 22, in dataReceived
    self.output.write(type(data))
  File "/usr/lib/python2.7/dist-packages/twisted/internet/_posixstdio.py", line 53, in write
    self._writer.write(data)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/process.py", line 174, in write
    abstract.FileDescriptor.write(self, data)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/abstract.py", line 335, in write
    self._tempDataLen += len(data)
exceptions.TypeError: object of type 'type' has no len()

したがって、「データ」を「チェック」することはできず、データについて何かを印刷したり、そのタイプを変更しようとすると、広範なエラーが発生しますか? 私が見逃している明らかな何かがありますか、それともこれは間違った方法ですか? ここで役立つ場合は、サーバースクリプトです

4

1 に答える 1