2012-05-01 6 views
1

私はTCP/IPプロトコルでソケットを設定しています。受信者が処理しているので、このアプローチが正しいかどうかを知りたいと思います。Twisted TCPソケットを作成してテスト値を送信する

接続時に、サーバーはの値を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

利用のstruct

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を使用しての種類と種類 の間の変換のためのより多くの情報を見つけることができます。