2012-05-01 5 views
1

Я настраиваю сокет с TCP/IP-протоколом, и поскольку мой приемник обрабатывает int8u_t, я хотел бы знать, правильный ли этот подход.Создание скрученного TCP-сокета и отправка тестового значения

При подключении серверу необходимо отправить значение mode=int(42) в приемник, который делается в def connectionMade(self). Но я понимаю, что будут некоторые конфликты, так как нормальный int в python 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

режим = упаковка ("Я", 42) 'сделал трюк. Отлично! – JavaCake

+0

Voila ;-) Спасибо. – JavaCake

+0

Комментарий! Почему вниз! –

2

Вы можете сделать это с помощью numpy:

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

Вы можете найти более подробную информацию о типах и преобразования между типами использованием numpyhere.

 Смежные вопросы

  • Нет связанных вопросов^_^