创建Twisted TCP套接字并发送测试值

2024-10-03 11:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用TCP/IP协议设置一个套接字,由于我的接收器正在处理int8u_t,我想知道这种方法是否正确。在

在连接时,服务器必须向接收方发送一个值mode=int(42),这在def connectionMade(self)中完成。但是我知道会有一些冲突,因为python中的正常int是32位的,而我的接收器只有8位,我可以用int8u来强制转换或创建它吗?在

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class TestSocket(Protocol):
        def connectionMade(self):
                mode=int(42)
                self.factory.clients.append(self)
                self.transport.write(mode)
                print "clients are ", self.factory.clients

        def connectionLost(self, reason):
            self.factory.clients.remove(self)

        def dataReceived(self, data):
                #print "data is ", data
                #a = data.split(':')
                print data
                print "-------------------"

        def message(self, message):
                self.transport.write(message + '\n')

factory = Factory()
factory.protocol = TestSocket()
factory.clients = []

reactor.listenTCP(30002, factory)
print "TestSocket server started"
reactor.run()

Tags: fromselfmessagedatamodefactorydefint
2条回答

使用结构

from struct import *
mode = pack("h", 42) # 'h' == short

编辑:显然你想要pack("I", 42)

您可以使用numpy

import numpy
mode = numpy.int8(42)  # int8   Byte (-128 to 127)

您可以找到有关类型和类型之间转换的更多信息 使用numpyhere。在

相关问题 更多 >