2012-05-01 40 views
1

我正在建立一个TCP/IP协议的套接字,并且由于我的接收器正在处理int8u_t我想知道这种方法是否正确。创建扭曲的TCP套接字并发送测试值

在连接服务器有一个值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() 
+1

'模式= INT(42)'可以更好地表述为'模式= 42' –

回答

1

使用结构

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

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

+0

'模式=包( “I”, 42)'做了诡计。完善! – JavaCake

+0

Voila ;-)谢谢。 – JavaCake

+0

评论!为什么downvote! –

2

可以使用numpy做到这一点:

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

可以使用numpyhere找到类型和类型 之间转换的详细信息。