2015-03-01 3 views
1

У меня есть скрученный скрипт сервера, прослушивающий сокет unix, и он получает данные, когда клиент находится в скрученном состоянии, но он не работает, если я отправляю его через код сокета ванильного питона.Данные, полученные при подключении с витой розеткой

class SendProtocol(LineReceiver): 
""" 
This works 
""" 
    def connectionMade(self): 
    print 'sending log' 
    self.sendLine(self.factory.logMessage) 

    if __name__ == '__main__': 

    address = FilePath('/tmp/test.sock') 
    startLogging(sys.stdout) 

    clientFactory = ClientFactory() 
    clientFactory.logMessage = 'Dfgas35||This is a message from server' 
    clientFactory.protocol = SendProtocol 

    port = reactor.connectUNIX(address.path, clientFactory) 
    reactor.run() 

Но это не (сервер не получает каких-либо данных)

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) 

sock_addr = '/tmp/test.sock' 
try: 
    sock.connect(sock_addr) 
except socket.error, msg: 
    print >> sys.stderr, msg 
    sys.exit(1) 

sock.setblocking(0) # not needed though tried both ways 
print 'connected %s' % sock.getpeername() 
print 'End END to abort' 

while True: 
    try: 
    line = raw_input('Enter mesg: ') 
    if line.strip() == 'END': 
     break 

    line += '\n' 
    print 'sending' 
    sock.sendall(line) 
    finally: 
    sock.close() 

ответ

3

Ваши две клиентские программы посылать различные данные. Один отправляет \r\n -минированные строки. Другой отправляет \n -минированные строки. Возможно, ваш сервер ожидает \r\n -иминированных строк, и поэтому последний пример не работает. Ваш пример без скручивания также закрывает сокет после первой строки, которую он отправляет, но продолжает его цикл чтения-отправки.

+0

Это сделало. Его '\ r \ n'. Я должен был изучить сам скрученный код. –

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